我正在尝试通过点击MS word 10中的按钮添加自定义构建块。下面是当前附加到我的activeX按钮的代码。
Private Sub CommandButton1_Click()
Dim objTemplate As Template
Dim objBB As BuildingBlock
' Set the template to store the building block
Set objTemplate = ActiveDocument.AttachedTemplate
' Access the building block through the type and category
Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustom5) _
.Categories("General").BuildingBlocks("Experience")
' Insert the building block into the document replacing any selected text.
objBB.Insert Selection.Range
End Sub
我的问题是,当点击按钮调用此代码时,按钮变为“Selection.Range”,因此被替换。我四处寻找备用代码,提到不同的“where”规范并没有发现任何内容。
我只发现了两个链接(找不到我历史记录中的网址,很快就会更新)
它提到“Paragraphs(1)”而不是“Selection.Range”,但是这个 是一个绝对的位置,而我需要一些亲戚 (按钮前)
使用InsertBefore方法,我认为它只适用于文本(它 用于在示例中插入文本)就像我尝试它时一样 它没有用的构建块
P.S我对VBA来说相对较新
答案 0 :(得分:0)
当处于"创建模式"时,转到"属性"您CommandButton1
的工具箱,将属性TakeFocusOnClick
从 True 更改为 False :
焦点将保留在您选择的段落上。
如果您想在CommandButton之后使用它,可以在sub的末尾添加以下内容:
...
CommandButton1.Select
Selection.HomeKey wdLine
objBB.Insert Selection.Range
End Sub
答案 1 :(得分:0)
好的,我使用以下代码解决了这个问题,并将其发布给其他可能会在将来放弃的人。
Private Sub CommandButton1_Click()
Dim objTemplate As Template
Dim objBB As BuildingBlock
' Set the template to store the building block
Set objTemplate = ActiveDocument.AttachedTemplate
' Access the building block through the type and category
Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustom5) _
.Categories("General").BuildingBlocks("Experience")
' Insert the building block into the document replacing any selected text.
Selection.MoveUp Unit:=wdLine, Count:=1
objBB.Insert Selection.Range
End Sub
基本上只是在插入BuildingBlock之前添加了以下行
Selection.MoveUp Unit:=wdLine, Count:=1
感谢大家的帮助。