在Word VBA中查找字符数

时间:2016-11-09 20:55:22

标签: excel vba ms-word range word-vba

我正在尝试从Excel电子表格中动态生成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.

问题是:如何在word文档中找到特定点?我试图将这些形式插入的形式是静态的,所以我可以放心地假设如果我想在字符100处插入它,每次我创建一个新表单时它会将它插入到同一个地方。

我尝试使用'字数'字符按钮,但这似乎并不准确。在我想要的地方前面一直有40个左右的角色。没看到模式。

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

1 个答案:

答案 0 :(得分:2)

我相信书签功能正是您所需要的。

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

Examples for using a bookmark to insert text.

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

MSDN Document for creating bookmarks programmatically.

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