0

我正在尝试BuildingBlockEntries通过 Microsoft Word 2007 中的宏访问模板集合的成员。由于它是一个集合,我首先认为For Each循环是最好的方法:

 For Each bBlock In NormalTemplate.BuildingBlockEntries
        MessageBox.Show (bBlock.Name)
    Next bBlock

但是,此尝试通过错误:Object doesn't support property or method. 所以我尝试了这里建议的这种方法:

Templates.LoadBuildingBlocks   
Dim iBB As Integer
iBB = NormalTemplate.BuildingBlockEntries.Count()
Dim bb As Word.BuildingBlock
Dim i As Integer
Dim objCounter As Object

If iBB > 0 Then

  For i = 1 To iBB
    objCounter = i
    bb = NormalTemplate.BuildingBlockEntries.Item(objCounter)
    MessageBox.Show (bb.Name)
  Next

End If   

但是,这会导致标题中显示的错误:Object variable or With Block variable not set.

我试过只使用一个整数变量作为索引,i特别是,但现在可用。我怎样才能达到预期的效果?我的尝试有什么问题?

感谢您的帮助。

4

1 回答 1

1

对于您的第二个问题,答案是您需要使用Set,就像bb一个对象一样:

Set bb = NormalTemplate.BuildingBlockEntries.Item(objCounter)

有关 Set 的更多信息,请查看这个SO question

对于您的 For/Next 循环,尚不清楚您如何声明bBlock. 我想它应该是这样的:

Dim bBlock as BuildingBlock

也许该For行应该引用BuildingBlocks而不是BuildingBlockEntries

For Each bBlock In NormalTemplate.BuildingBlocks

不过我不确定,因为我只是在查看 Intellisense 中弹出的内容。

于 2013-03-01T18:39:39.260 回答