Visual Studio 2010中VBA到C#的转换

本文关键字:转换 VBA Studio 2010 Visual | 更新日期: 2023-09-27 18:00:34

我正在使用带有VSTO的Visual Studio 2010。目前,我正在通过一个功能区按钮修改邮件正文的内容。

我知道Word编辑器是Outook 2007中的默认编辑器。那么,当对检查器窗口(撰写邮件窗口)使用单词编辑器时,我如何获得正文的文本来执行搜索和替换操作呢?

我有一个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

Visual Studio 2010中VBA到C#的转换

我不熟悉Outlook的自动化和工具包。这或多或少与转换为C#的代码相同。如果没有别的,那就是一个开始。没有C#等价的With语句仅供参考。

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);
           }
       }
   }