首页 > 解决方案 > 为什么这种方法从字面上删除书签范围?C#

问题描述

我在一个程序上使用 C# 工作,程序的一个和平需要替换一些书签文本,但只有文本和书签范围需要与我插入的文本长度相同。

我对此进行了搜索,但我坚持使用这种方法:

internal void BookMarkReplaceNative(Document doc,
                Bookmark bookmark,
                string newText)
        {
            object rng = bookmark.Range;
            string bookmarkName = bookmark.Name;

            bookmark.Range.Text = newText;

            doc.Bookmarks.Add(bookmarkName, ref rng);
        }

举一个例子(CONTR_L 是一个字符串):

Bookmark NR_CONTR =doc.Bookmarks.get_Item("NR_CONTR");
BookMarkReplaceNative(doc,NR_CONTR, CONTR_L);

问题是,一旦程序替换了文本,范围就只是文本的开头,在第一个字母之前。

有什么问题 ?

标签: c#visual-studioms-wordbookmarks

解决方案


根据我的研究,我可以使用以下代码成功替换书签文本。

        using Word = Microsoft.Office.Interop.Word;
        Word.Application application = new Word.Application();
        Word.Document document = application.Documents.Open("D:\\1.docx");
        application.Visible = true;
        document.Bookmarks["First"].Select();
        application.Selection.TypeText("Firstbook");
        document.Save();
        application.Quit();

结果:

在此处输入图像描述


推荐阅读