簡體   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