我的目标是以某种方式能够在outlook .msg文件中读取书签,然后用不同的文本替换它们。我想用C#做这个。
我知道如何访问正文并更改文本,但是想知道是否有办法直接访问所有书签的列表及其位置,以便我可以轻松替换它们,而不是通过全身文本,分裂等等...
编辑:this is how a bookmark window looks like从此窗口可以指定书签,但应该可以通过c#获取此列表。
任何相关信息表示赞赏。 提前谢谢。
答案 0 :(得分:0)
自Outlook most often uses Word as it's body editor - 您需要向 Microsoft.Office.Interop.Word.dll 添加项目引用,然后在{{}期间访问Outlook Inspector的WordEditor
{3}}事件。一旦您有权访问Inspector.Activate
,就可以轻松访问Word.Document
并访问/修改其值。
Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
((Outlook.InspectorEvents_10_Event)inspector).Activate += () =>
{ // validation to ensure we are using Word Editor
if (inspector.EditorType == Outlook.OlEditorType.olEditorWord && inspector.IsWordMail())
{
Word.Document wordDoc = inspector.WordEditor as Word.Document;
if (wordDoc != null)
{
var bookmarks = wordDoc.Bookmarks;
foreach (Word.Bookmark item in bookmarks)
{
string name = item.Name; // bookmark name
Word.Range bookmarkRange = item.Range; // bookmark range
string bookmarkText = bookmarkRange.Text; // bookmark text
item.Select(); // triggers bookmark selection
}
}
}
};