对象变量或块变量未设置w / for循环

时间:2018-01-25 21:00:11

标签: excel vba excel-vba

我正在尝试从Excel中的条目替换word文档中的文本。当我运行没有标签for-loop的代码时(这意味着单个标签 - 值组合)它正常工作。但是,我在外部标记循环中插入wdDoc.StoryRanges循环我收到错误

  

"对象变量或未设置块变量"

尽管在外循环之前设置了wdDoc值。

你们任何人都可以提供建议。

非常感谢!

Public Function Test(filepath as String) As Variant
counter = 0

Dim wdApp As Object
Dim wdDoc As Object

Set wdApp = CreateObject("word.application")
wdApp.Visible = True

Set wdDoc = wdApp.Documents.Open(filePath)

For Each tag In tags
  counter = counter + 1
  If Len(tag) > 0 Then
    Dim wdRng As Word.Range
    For Each wdRng In wdDoc.StoryRanges <-- [I am getting the error here]
        With wdRng.Find
            .Text = tag
            .Highlight = True
            With .Replacement
                .Text = values(counter, 1)
                .Highlight = False
            End With
            .Wrap = wdFindContinue
            .Execute Replace:=wdReplaceAll
        End With
        Set wdApp = Nothing: Set wdDoc = Nothing: Set wdRng = Nothing
    Next wdRng
   End If
Next tag
End Function

1 个答案:

答案 0 :(得分:1)

该错误通常意味着未设置变量。如果你在wdDoc.StoryRanges中添加一个观察者,你可能会看到是否设置了该变量。或者甚至可能没有设置wdRng,那么你可能不得不使用计数器索引,并使用while循环来完成你的任务。