在MS Word文档中查找特定字符串并在该位置设置书签

时间:2014-03-25 13:36:24

标签: excel vba excel-vba ms-word word-vba

大家好,

我需要通过Excel VBA在MS Word文档中找到特定字符串(格式为标题1),然后在该位置设置书签。一旦我获得了搜索字符串的范围,后一部分应该不是问题。

但是,我似乎无法弄清楚如何使用Excel VBA在Word中搜索字符串。

我尝试了以下(缩短):

Option Explicit

Sub exportWord(button As IRibbonControl)
Application.ScreenUpdating = False

Dim wrdDoc As Word.document
Dim wrdApp As Word.Application
Dim wrdLoc As String
wrdLoc = ThisWorkbook.Worksheets("Konfiguration").Range("changelogPath")

Set wrdApp = New Word.Application
wrdApp.Visible = True

Set wrdDoc = wrdApp.Documents.Open(wrdLoc)

Dim wrdRange As Word.Range
Dim searchString As String

Set wrdRange = wrdDoc.Range
searchString = "Test"

With wrdRange.Find
    .Text = searchString 
    .Replacement.Text = "Replacement Test"
    .wrap = wdFindContinue
    .ClearFormatting
    .Replacement.ClearFormatting
    .Replacement.Highlight = False
    .Execute Replace:=wdReplaceAll
End With
End Sub

这实际上并没有做任何事情,但我只是想检查一下发现的效果。它不会和Excel只是崩溃没有任何VBA错误或任何东西。只是说“程序没有响应,应用程序遇到了问题并且将被关闭”这句话的一些内容“

有没有人知道为什么Excel会在没有任何正确错误消息的情况下崩溃?或者如何正确地在Word文档中实现搜索?

最好的问候,

daZza

1 个答案:

答案 0 :(得分:0)

尝试了不同的东西并用以下方法解决了:

 For Each rngStory In wrdDoc.StoryRanges
        With rngStory.Find
            .Replacement.ClearFormatting
            .Text = "Änderungen in Test12345"
            .Replacement.Text = "test"
            .wrap = wdFindContinue
            .ExecuteReplace:=wdReplaceAll
        End With
    Next