Vba 对象变量或块变量未设置为w/for循环
我试图从Excel中的条目替换word文档中的文本。当我在没有标记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
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。