我正在尝试从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文档本身(不能添加网格,网格布局,表格或类似的东西)。
答案 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