0

BuildingBlockEntriesMicrosoft 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

2 番目の質問では、オブジェクト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 に答える