0
我得到一個運行時錯誤91以下的Word VBA:字VBA得到運行時錯誤91,在Word中使用range.find頭
Dim myStoryRange As Object
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.find
.Text = "test to search"
.Replacement.Text = "text to replace"
.Wrap = wdFindContinue
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = False
.Execute replace:=wdReplaceAll
End With
Next myStoryRange
上一半左右的電腦運行的不一致出現的錯誤宏。
想法?
每帕特里克的建議,我已經改變了代碼如下:
Dim myStoryRange As Range
For xStories = 1 To ActiveDocument.StoryRanges.Count
Set myStoryRange = ActiveDocument.StoryRanges.Item(xStories)
With myStoryRange.find
.Text = "[Client Name]"
.Replacement.Text = Client
.Wrap = wdFindContinue
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = False
.Execute replace:=wdReplaceAll
End With
Next xStories
這似乎解決了錯誤91.不過,我仍然得到一個奇怪的結果。此代碼在第5行(含myStoryRange.find)失敗,集合中的第二個項目出現錯誤「集合的請求成員不存在」。
存在收集成員時失敗。換句話說,有7個xStories,它在xStories = 2時失敗。而xStories = 2是一個完整的項目,所有的屬性都被引用。
作爲供參考,我試圖替換文檔標題中的一些文本。我在標題中的StoryRange項目上發生故障,而不是文檔正文。這可能是問題嗎?
我的想法......你還沒有包括所有的信息......等等,其行獲得誤差? – jsotola
難道你不應該'Dim myStoryRange As Range'?您可能必須使用For循環與'ActiveDocument.StoryRanges.Count'和'Set myStoryRange = ActiveDocument.StoryRanges.Item(#)' – PatricK
如果您要替換標題中的文本,爲什麼不選擇您想要的範圍像'StoryRanges(wdPrimaryHeaderStory)'而不是循環遍歷所有的故事? – xidgel