在word 10中使用积木插入方法时如何指定"where"

How do I specify "where" when using the insert method for build blocks in word 10

我正在尝试通过单击 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" 规范的替代代码,但一无所获。

我只找到了两个链接(目前在我的历史记录中找不到网址,将很快更新)

  1. 它提到了"Paragraphs(1)"而不是"Selection.Range",但是这个 是一个绝对位置,而我需要一些相对的东西 (按钮前)

  2. 使用我认为仅适用于文本的 InsertBefore 方法(它 用于在示例中插入文本)就像我尝试它时一样 积木没用

P.S 我对 VBA

比较陌生

在 "Creation mode" 中时,转到 CommandButton1 的 "properties" 工具箱,将 属性 TakeFocusOnClickTrueFalse:

焦点将停留在您选择的段落上。

如果你想在你的 CommandButton 之后添加它,你可以在你的 sub 的末尾添加以下内容:

    ...
    CommandButton1.Select
    Selection.HomeKey wdLine
    objBB.Insert Selection.Range
End Sub

好的,我用下面的代码解决了这个问题,把它发给以后可能会来的人。

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

感谢大家的帮助。