在所有子文件夹中替换word文件中的文本 [英] Replace text in word file in all sub folders

查看:36
本文介绍了在所有子文件夹中替换word文件中的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在整理一个 VBA 宏:

I am putting together a VBA macro that:

1.读取文件夹

2.创建其所有子文件夹的集合

2.creates a collection of all its subfolders

3.遍历所有子文件夹,找到任何以.doc结尾的word文档

3.loops through all the subfolders and find any word document ending in .doc

4.在每个.doc文件中:替换一些文本并保存然后关闭文档.

4.in each .doc file: replace a bit of text and save then close the documents.

此宏无法正常工作:它不会替换子文件夹中任何 Word 文档中的文本.它实际上并没有打开任何 word 文档,我不确定它是否应该一个接一个地打开每个 word 文档,或者它是否在后台运行.

This macro doesn't work correctly: it doesn't replace the text in any word documents in the subfolders. It doesn't actual open any word document, I am unsure wether it should open each word doc one after another or if it runs in the background.

Sub DoLangesNow()
Dim file
Dim path As String
Dim strFolder As String
Dim strSubFolder As String
Dim strFile As String
Dim colSubFolders As New Collection
Dim varItem As Variant

 ' Parent folder including trailing backslash
 'YOU MUST EDIT THIS.
     strFolder = "G:\2009\09771\Design\ESD\Commercial Tower KSD1\Green Star As Built\Round 1 Submission - Draft\02. Indoor Environment Quality"

     ' Loop through the subfolders and fill Collection object
     strSubFolder = Dir(strFolder & "*", vbDirectory)
     Do While Not strSubFolder = ""
         Select Case strSubFolder
             Case ".", ".."
                 ' Current folder or parent folder - ignore
             Case Else
                 ' Add to collection
                 colSubFolders.Add Item:=strSubFolder, Key:=strSubFolder
         End Select
         ' On to the next one
         strSubFolder = Dir
     Loop
     ' Loop through the collection
     For Each varItem In colSubFolders
         ' Loop through word docs in subfolder
         'YOU MUST EDIT THIS if you want to change the files extension
         strFile = Dir(strFolder & varItem & "*.doc")
         Do While strFile <> ""
         Set file = Documents.Open(FileName:=strFolder & _
                 varItem & "\" & strFile)

' Start of macro 1replace text GS-XXXAB  with GS-1624AB
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Application.WindowState = wdWindowStateNormal
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "GS-XXXAB "
        .Replacement.Text = "GS-1624AB "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
' End of macro 1
' Saves the file
ActiveDocument.Save
ActiveDocument.Close
' set file to next in Dir
strFile = Dir
         Loop
     Next varItem
 End Sub

推荐答案

您的代码对我有用,有以下更改

Your code worked for me with below changes

  • 来自
    strFile = Dir(strFolder & varItem & "*.doc")

  strFile = Dir(strFolder & varItem & "\" & "*.doc")

  • 确保strFolder 变量中的文件夹路径正确.例如( strFolder = "C:\Users\Santosh\Desktop\tes\")
  • Make sure the path for folder is correct in strFolder Variable. Eg( strFolder = "C:\Users\Santosh\Desktop\tes\")

这篇关于在所有子文件夹中替换word文件中的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆