2011-06-27 105 views
0

我正在使用Visual Studio 2010和VSTO。目前,我正在通過一個功能區按鈕修改正文的內容,在電子郵件輸入後。Visual Studio 2010中的VBA轉換爲C#

我知道Word編輯器是Outook 2007中的默認編輯器。那麼,如何在檢查器窗口(編寫郵件窗口)使用word編輯器時如何獲取正文的文本以執行搜索和替換操作?

我在VBA中有一個宏代碼,它工作得很好。我想將此代碼轉換爲C sharp,這將在合成郵件窗口中單擊功能區按鈕時起作用。

Sub ASAtoHyperlinkCompose() 

Dim uiInspector As Outlook.Inspector 

Dim uiObject As Object 

Dim uiItem As Outlook.MailItem 

Dim uiDoc As Word.Document 

Set uiInspector = Application.ActiveInspector 

Set uiObject = uiInspector.CurrentItem 

If uiObject.MessageClass = "IPM.Note" And _ 

    uiInspector.IsWordMail = True Then 

    Set uiItem = uiInspector.CurrentItem 

    Set uiDoc = uiInspector.WordEditor 

    With uiDoc.Range.Find 

    .Text = "ASA^$^$^#^#^#^#^#" 

    While .Execute 

    .Parent.Hyperlinks.Add .Parent, _ 

    "http://stack.com=" & .Parent.Text & "outlook2007" 

    .Parent.Collapse wdCollapseEnd 

    Wend 

    End With 

    End If 

End Sub 

回答

0

我不熟悉Outlook的自動化和工具包。這或多或少是將相同的代碼轉換爲C#。如果沒有別的,這是一個開始。沒有任何C#等效於聲明FYI。

private void ASAtoHyperlinkCompose() 
    {           
     var uiInspector = Application.ActiveInspector; 

     var uiObject = uiInspector.CurrentItem; 

     if (uiObject.MessageClass.ToString().Equals("IPM.Note") && uiInspector.IsWordMail) 
     { 
      var uiItem = uiInspector.CurrentItem; 

      var uiDoc = uiInspector.WordEditor; 

      uiDoc.Range.Find.Text = "ASA^$^$^#^#^#^#^#"; 

      while (uiDoc.Range.Find.Execute()) 
      { 
       uiDoc.Range.Find.Parent.Hyperlinks.Add(uiDoc.Range.Find.Parent, string.Format(@"http://stack.com={0}outlook2007", uiDoc.Range.Find.Parent.Text)); 
       uiDoc.Range.Find.Parent.Collapse(wdCollapseEnd); 

      } 
     } 
    } 
相關問題