Преобразование VBA в C # в Visual Studio 2010 - PullRequest
0 голосов
/ 27 июня 2011

Я использую Visual Studio 2010 с VSTO. В настоящее время я работаю над изменением содержимого тела с помощью кнопки на ленте после ввода электронного письма.

Мне известно, что Word Editor является редактором по умолчанию в 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

1 Ответ

0 голосов
/ 27 июня 2011

Я не знаком с автоматизацией и инструментарием 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);

           }
       }
   }
...