2017-09-27 75 views
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項目上發生故障,而不是文檔正文。這可能是問題嗎?

+0

我的想法......你還沒有包括所有的信息......等等,其行獲得誤差? – jsotola

+0

難道你不應該'Dim myStoryRange As Range'?您可能必須使用For循環與'ActiveDocument.StoryRanges.Count'和'Set myStoryRange = ActiveDocument.StoryRanges.Item(#)' – PatricK

+0

如果您要替換標題中的文本,爲什麼不選擇您想要的範圍像'StoryRanges(wdPrimaryHeaderStory)'而不是循環遍歷所有的故事? – xidgel

回答

0

我能解決這個問題(在評論家的幫助下)。答案是標題文本被視爲Sections集合中的一個項目。這看起來不一致,因爲它在StoryRanges中顯示以及項目。但是,使用該集合查找和替換時發生錯誤。

下面的代碼正確地搜索並在Word頁眉替換文本:

Dim myStoryRange As Range 

    For xStories = 1 To ActiveDocument.Sections(1).Headers.Count 

     Set myStoryRange = 
     ActiveDocument.Sections(1).Headers.Item(xStories).Range 

     With myStoryRange.find 
      .Text = "[Client Name]" 
      .Replacement.Text = Client 
      .Wrap = wdFindContinue 
      .ClearFormatting 
      .Replacement.ClearFormatting 
      .Replacement.Highlight = False 
      .Execute replace:=wdReplaceAll 
     End With 

    Next xStories