Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1550|回复: 9

[已解决]eXCEL改word批量替换

[复制链接]
发表于 2021-12-6 22:24 | 显示全部楼层 |阅读模式
本帖最后由 釜底抽薪 于 2021-12-6 22:26 编辑

表格中   A2 是要查找的内容
             B2 是要替换的内容
      就是替换不起 求大神帮忙指导下

Sub 批量写入()
Dim ar
ar = [{"查找字符","替换字符"}]
[a1].Resize(, UBound(ar)) = ar
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "请选择要处理的数据所在的文件夹"
        If .Show Then
            mypath = .SelectedItems(1)
        Else
            MsgBox "对不起,你没有告诉我要处理的工作簿在哪个文件夹", vbExclamation, "温馨提示"
            Exit Sub
        End If
    End With
mypath = IIf(Right(mypath, 1) <> "\", mypath & "\", mypath)
myname = Dir(mypath & "*.doc*")
   Application.ScreenUpdating = True
    Do While myname <> ""
            Set wdapp = CreateObject("word.application")
            wdapp.Documents.Open Filename:=mypath & myname
            wdapp.Visible = True
            wdapp.Selection.Find.Replacement.ClearFormatting
            With wdapp.Selection.Find
                .Text = Range("A2")
                .Replacement.Text = Range("B2")
            End With
            wdapp.Selection.Find.Execute Replace:=wdReplaceAll
            wdapp.Documents.Save
            wdapp.Application.Quit
            Set wdapp = Nothing
          myname = Dir
    Loop
Application.ScreenUpdating = False
    MsgBox "完成替换"
End Sub


最佳答案
2021-12-7 19:58
Sub 批量写入()
Dim ar, con, word
ar = [{"查找字符","替换字符"}]
[a1].Resize(, UBound(ar)) = ar
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "请选择要处理的数据所在的文件夹"
        If .Show Then
            mypath = .SelectedItems(1)
        Else
            MsgBox "对不起,你没有告诉我要处理的工作簿在哪个文件夹", vbExclamation, "温馨提示"
            Exit Sub
        End If
    End With
mypath = IIf(Right(mypath, 1) <> "\", mypath & "\", mypath)
myname = Dir(mypath & "*.docx*")
Set wdapp = CreateObject("word.application")
    Do While myname <> ""
        Set word = wdapp.Documents.Open(Filename:=mypath & myname)
        Set con = word.Content
        con.Find.Execute findtext:=Range("A2").Value, replacewith:=Range("B2").Value, Replace:=2
        word.Save
        word.Close
        Set word = Nothing
        myname = Dir
    Loop
    wdapp.Application.Quit
    Set wdapp = Nothing
    MsgBox "完成替换"
End Sub

1.zip

362.62 KB, 下载次数: 27

发表于 2021-12-7 19:58 | 显示全部楼层    本楼为最佳答案   
Sub 批量写入()
Dim ar, con, word
ar = [{"查找字符","替换字符"}]
[a1].Resize(, UBound(ar)) = ar
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "请选择要处理的数据所在的文件夹"
        If .Show Then
            mypath = .SelectedItems(1)
        Else
            MsgBox "对不起,你没有告诉我要处理的工作簿在哪个文件夹", vbExclamation, "温馨提示"
            Exit Sub
        End If
    End With
mypath = IIf(Right(mypath, 1) <> "\", mypath & "\", mypath)
myname = Dir(mypath & "*.docx*")
Set wdapp = CreateObject("word.application")
    Do While myname <> ""
        Set word = wdapp.Documents.Open(Filename:=mypath & myname)
        Set con = word.Content
        con.Find.Execute findtext:=Range("A2").Value, replacewith:=Range("B2").Value, Replace:=2
        word.Save
        word.Close
        Set word = Nothing
        myname = Dir
    Loop
    wdapp.Application.Quit
    Set wdapp = Nothing
    MsgBox "完成替换"
End Sub

1.zip

357.89 KB, 下载次数: 17

回复

使用道具 举报

发表于 2021-12-7 20:16 | 显示全部楼层
替换word文本.rar (357.86 KB, 下载次数: 15)
回复

使用道具 举报

 楼主| 发表于 2021-12-7 21:11 | 显示全部楼层

我也发现问题了
Replace:=wdReplaceAll    这给参数出了问题,在EXCELvba中 应当写2
回复

使用道具 举报

发表于 2021-12-12 22:05 | 显示全部楼层
请问大神如果要查找某个关键字把整个句子复制出来到EXCEL中,要修改哪里啊??
回复

使用道具 举报

发表于 2021-12-12 22:05 | 显示全部楼层
请问大神如果要查找某个关键字把整个句子复制出来到EXCEL中,要修改哪里啊??
回复

使用道具 举报

发表于 2022-2-18 10:04 | 显示全部楼层
大灰狼1976 发表于 2021-12-7 19:58
Sub 批量写入()
Dim ar, con, word
ar = [{"查找字符","替换字符"}]

真是秀呀!找了好久终于找到!
回复

使用道具 举报

发表于 2022-7-27 17:25 | 显示全部楼层
大灰狼1976 发表于 2021-12-7 19:58
Sub 批量写入()
Dim ar, con, word
ar = [{"查找字符","替换字符"}]

能不能多个替换,例如A换成大师1,B换成大师2,C换成大师3!等等,谢谢!
回复

使用道具 举报

发表于 2022-7-27 22:08 | 显示全部楼层
回复

使用道具 举报

发表于 2022-8-1 09:25 | 显示全部楼层
大灰狼1976 发表于 2021-12-7 19:58
Sub 批量写入()
Dim ar, con, word
ar = [{"查找字符","替换字符"}]

大师阿,能不能改成批量 A,B,C,D,E,这种的,循环批量,这个要是有以后这种就是万版了,,,电脑存了只有批量生成指定模板的,,你这个做了就变万能的了,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 06:34 , Processed in 1.336540 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表