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
我不熟悉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);
}
}
}