Word Interop 书签不存在
Word Interop Bookmarks Dont Exist
我目前正在创建一个 c# 程序,它使用 template.dotx 包含预定义构建块(带有书签)的内容页面插入新文档,所有工作如下
Word._Application oWord;
Word._Document oDoc;
object oMissing = System.Reflection.Missing.Value;
object bAddress = "bAddress";
oWord = new Word.Application();
object oTemplate = _template;
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
ref oMissing, ref oMissing);
Word.Template objTmpl = (Word.Template)oDoc.get_AttachedTemplate();
Word.BuildingBlock objBB = objTmpl.BuildingBlockEntries.Item("PageBB");
Range where = oDoc.Range(oDoc.Content.End - 1, oDoc.Content.End - 1);
var orng = objBB.Insert(where, true);
orng.Bookmarks[bAddress].Range.Text = "Address";
我想反过来执行此操作,以便稍后打开创建的文件,并通读每个书签以获取值。
问题是当我打开生成的 DocXCreatedFromTemplate.docx 时,书签消失了。以编程方式,我收到书签不在集合中的错误,但也通过允许打开 word 并手动检查书签被文本替换,但书签参考已经消失。
有什么办法解决这个问题吗?
我已经解决了,下面的文字替换删除书签
orng.Bookmarks[bAddress].Range.Text = "Address";
解决方法是之后使用如下方法重新添加书签
private void UpdateBookmarkWithoutDeleting(object bookmark, string text, _Document document)
{
var bookmarkRange = document.Bookmarks[bookmark].Range;
bookmarkRange.Text = text;
document.Bookmarks.Add(bookmark.ToString(), bookmarkRange);
}
我在link(在VB中)找到了信息:
https://wordmvp.com/FAQs/MacrosVBA/InsertingTextAtBookmark.htm
我目前正在创建一个 c# 程序,它使用 template.dotx 包含预定义构建块(带有书签)的内容页面插入新文档,所有工作如下
Word._Application oWord;
Word._Document oDoc;
object oMissing = System.Reflection.Missing.Value;
object bAddress = "bAddress";
oWord = new Word.Application();
object oTemplate = _template;
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
ref oMissing, ref oMissing);
Word.Template objTmpl = (Word.Template)oDoc.get_AttachedTemplate();
Word.BuildingBlock objBB = objTmpl.BuildingBlockEntries.Item("PageBB");
Range where = oDoc.Range(oDoc.Content.End - 1, oDoc.Content.End - 1);
var orng = objBB.Insert(where, true);
orng.Bookmarks[bAddress].Range.Text = "Address";
我想反过来执行此操作,以便稍后打开创建的文件,并通读每个书签以获取值。
问题是当我打开生成的 DocXCreatedFromTemplate.docx 时,书签消失了。以编程方式,我收到书签不在集合中的错误,但也通过允许打开 word 并手动检查书签被文本替换,但书签参考已经消失。
有什么办法解决这个问题吗?
我已经解决了,下面的文字替换删除书签
orng.Bookmarks[bAddress].Range.Text = "Address";
解决方法是之后使用如下方法重新添加书签
private void UpdateBookmarkWithoutDeleting(object bookmark, string text, _Document document)
{
var bookmarkRange = document.Bookmarks[bookmark].Range;
bookmarkRange.Text = text;
document.Bookmarks.Add(bookmark.ToString(), bookmarkRange);
}
我在link(在VB中)找到了信息: https://wordmvp.com/FAQs/MacrosVBA/InsertingTextAtBookmark.htm