繁体   English   中英

Vba代码正在打开Word文档,但未执行Find-Replace函数。 需要一些编辑

[英]Vba code is opening the word documents but it is not executing the Find-Replace function. Need some editing

Sub FindandReplace()
Dim wrd As Word.Application
Set wrd = CreateObject("word.application")
wrd.Visible = True
AppActivate wrd.Name
FName = Dir("C:\Users\user\Desktop\folderb\*.doc")
Do While (FName <> "")
    With wrd
        .Documents.Open ("C:\Users\user\Desktop\folderb\" & FName)
        If .ActiveWindow.View.SplitSpecial = wdPaneNone Then
            .ActiveWindow.ActivePane.View.Type = wdPrintView
        Else
            .ActiveWindow.View.Type = wdPrintView
        End If

        With Selection.Find
        .Text = "Day 10"
        .Replacement.Text = "Day 11"
        .Execute Replace:=wdReplaceAll, Forward:=True, _
         Wrap:=wdFindContinue
        End With

       With Selection.Find
       .Text = "delta"
       .Replacement.Text = "alpha"
       .Execute Replace:=wdReplaceAll, Forward:=True, _
       Wrap:=wdFindContinue
       End With

       With Selection.Find
       .Text = "5.4.1"
       .Replacement.Text = "5.6.0"
       .Execute Replace:=wdReplaceAll, Forward:=True, _
       Wrap:=wdFindContinue
       End With
      .ActiveDocument.Save
      .ActiveDocument.Close
    End With
    FName = Dir
    Loop
    Set wrd = Nothing
  End Sub

我正在尝试查找和替换“ folderb”中包含的十个不同的Word文档中的文本

但是问题是,一旦我运行此宏,文档就会一一打开,保存并退出。

查找和替换作业尚未完成!

请告诉我以上代码在哪里出错了。

任何帮助将由衷的感谢。

我认为您基本上缺少了在替换内容之前需要选择所有文本的部分。 因此,在第一次选择文件之前打开文件之后,需要选择该文档中的所有文本。 在你的情况下

    .Documents.Open ("C:\Users\user\Desktop\folderb\" & FName)
    If .ActiveWindow.View.SplitSpecial = wdPaneNone Then
        .ActiveWindow.ActivePane.View.Type = wdPrintView
    Else
        .ActiveWindow.View.Type = wdPrintView
    End If

    ActiveDocument.Range(0, 0).Select
    Selection.WholeStory

    With Selection.Find
    .Text = "Day 10"
    .Replacement.Text = "Day 11"
    .Execute Replace:=wdReplaceAll, Forward:=True, _
     Wrap:=wdFindContinue
    End With

尝试和测试

Sub LoopDirectory()
    Dim vDirectory As String
    Dim oDoc As Document
    vDirectory = "D:\test\"
    vFile = Dir(vDirectory & "*.docx")

    Do While vFile <> ""
        Set oDoc = Documents.Open(FileName:=vDirectory & vFile)
         With oDoc.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchWildcards = False
            .Text = "Day 10"
            .Replacement.Text = "Day 11"
            .Execute Replace:=wdReplaceAll
            .Text = "delta"
            .Replacement.Text = "alpha"
            .Execute Replace:=wdReplaceAll
            .Text = "5.4.1"
            .Replacement.Text = "5.6.0"
            .Execute Replace:=wdReplaceAll
        End With
        oDoc.Close SaveChanges:=True
        vFile = Dir
    Loop
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM