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

Vba 对象变量或块变量未设置为w/for循环,vba,excel,Vba,Excel,我试图从Excel中的条目替换word文档中的文本。当我在没有标记for循环的情况下运行代码(这意味着使用单标记值组合)时,它正常工作。但是,我将wdDoc.StoryRanges循环插入到外部标记循环中,我得到了错误 “未设置对象变量或带块变量” 尽管在外循环之前设置了wdDoc值 请你们中的任何一位提出建议 多谢各位 Public Function Test(filepath as String) As Variant counter = 0 Dim wdApp As Object Dim

我试图从Excel中的条目替换word文档中的文本。当我在没有标记for循环的情况下运行代码(这意味着使用单标记值组合)时,它正常工作。但是,我将
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
公共函数测试(文件路径为字符串)作为变量
计数器=0
作为对象的应用程序
Dim wdDoc作为对象
Set wdApp=CreateObject(“word.application”)
wdApp.Visible=True
设置wdDoc=wdApp.Documents.Open(文件路径)
对于标记中的每个标记
计数器=计数器+1
如果Len(tag)>0,则
暗wdRng作为字范围

对于wdDoc.StoryRanges中的每个wdRng,该错误通常意味着未设置变量。如果在wdDoc.StoryRanges中添加观察程序,您可能会看到该变量是否已设置。或者甚至可能未设置wdRng,那么您可能必须使用计数器索引,并使用while循环来执行任务。

我猜
故事范围
未设置?文件实际打开了吗?在代码的顶部使用
选项Explicit
。我意识到wdRng没有设置。我必须在for循环和sRng中创建另一个变量,并将其设置为wdRng。