在Word VBA中查找字符数

我试图从Excel电子表格中dynamic生成一个Word文档。 我现在要做的方式是基本上手动查找字符数,然后最终插入给定的项目在特定的字符数。 给定的项目存储在Excel中。 所以它会是这样的:

电子表格

| 1 | 2 | 3 Char | 50 | 125 | 250 Item | Hello | Darkness | Friend 

然后在VBA这个词中使用

 Dim myCheck As ContentControl Dim myRange As Range Dim rng As Long rng = ''whatever char is for that column Set myRange = ActiveDocument.Range(start:=rng, End:=rng) Set myCheck = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, myRange) 'what I am doing now is adding a check box dynamically at a given position on the range. This can be either checkboxes that are added or text or whatever. 

问题是:如何find一个word文档上的特定点? 我试图插入这些forms是静态的,所以我可以安全地假设,如果我想插入它在字符100,每次我做一个新的forms将它插入到相同的地方。

我尝试使用“字数”字符button,但似乎并不准确。 在我想要的地方,它总是有40多个字符。 没有看到一个模式。

有一种简单的方法可以将光标放在文档的某个位置,并知道有多less个字符在它之前出现,如范围对象所计算的那样? 还是有一个更有效的方法来定位在word文档上的东西,只要我不能在外观上改变word文档本身(不能添加网格,网格布局,表格或类似的东西)。

我相信书签的function是你要找的。

您可以事先在静态Word文档中创build书签,并将它们用作插入目标…或者可以使用VBA以编程方式创build书签, 然后使用插入文本选项。

使用书签插入文本的示例

 Sub InsertAtBookmarkI() ActiveDocument.Bookmarks("bmAtBookmark").Range.InsertAfter "Some text here" End Sub 

MSDN文档以编程方式创build书签。

 Sub Mark() ActiveDocument.Bookmarks.Add Name:="mark" End Sub Sub ThirdPara() Dim myDoc As Document ' To best illustrate this example, ' Letter.doc must be opened, not active, ' and contain more than 3 paragraphs. Set myDoc = Documents("Letter.doc") myDoc.Bookmarks.Add Name:="third_para", _ Range:=myDoc.Paragraphs(3).Range myDoc.ActiveWindow.View.ShowBookmarks = True End Sub