Excel精英培训网

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

[已解决]求大神优化一下代码。

[复制链接]
发表于 2021-11-14 10:38 | 显示全部楼层 |阅读模式
Sub 批量替换()
Application.ScreenUpdating = False
Dim wb As Excel.Workbook
f = Dir(ThisWorkbook.Path & "\*.xl*") '生成查找EXCEL的目录,可以适应不同版本
Do While f <> "" '在目录中循环
If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f) '依次打开目录工作薄
  Sheets("Sheet1").Select
     ActiveWorkbook.Save
  Cells.Replace What:="地基承载力", Replacement:=" ", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    wb.Close True
    End If
    f = Dir
    Loop
    Application.ScreenUpdating = True
End Sub

网上找的这段代码,可以运行,想让显示在表格中,最好能一次多替换几个。拜托各位大佬了,十分感谢


最佳答案
2021-11-14 12:46
没有附件,猜的。
  1. Sub 批量替换()
  2. Dim arr, i&
  3. arr = ActiveSheet.[a1].CurrentRegion
  4. Application.ScreenUpdating = False
  5. Dim wb As Excel.Workbook
  6. f = Dir(ThisWorkbook.Path & "\*.xl*") '生成查找EXCEL的目录,可以适应不同版本
  7. Do While f <> "" '在目录中循环
  8.     If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿
  9.         Set wb = Workbooks.Open(ThisWorkbook.Path & "" & f) '依次打开目录工作薄
  10.         Sheets("Sheet1").Select
  11.         ActiveWorkbook.Save
  12.         For i = 2 To UBound(arr)
  13.             Cells.Replace What:=arr(i, 1), Replacement:=arr(i, 2), LookAt:=xlPart, _
  14.                 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  15.                 ReplaceFormat:=False
  16.         Next i
  17.         wb.Close True
  18.     End If
  19.     f = Dir
  20. Loop
  21. Application.ScreenUpdating = True
  22. End Sub
复制代码
e347c8ac2b3a04516bbb4a34e434207.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-11-14 12:46 | 显示全部楼层    本楼为最佳答案   
没有附件,猜的。
  1. Sub 批量替换()
  2. Dim arr, i&
  3. arr = ActiveSheet.[a1].CurrentRegion
  4. Application.ScreenUpdating = False
  5. Dim wb As Excel.Workbook
  6. f = Dir(ThisWorkbook.Path & "\*.xl*") '生成查找EXCEL的目录,可以适应不同版本
  7. Do While f <> "" '在目录中循环
  8.     If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿
  9.         Set wb = Workbooks.Open(ThisWorkbook.Path & "" & f) '依次打开目录工作薄
  10.         Sheets("Sheet1").Select
  11.         ActiveWorkbook.Save
  12.         For i = 2 To UBound(arr)
  13.             Cells.Replace What:=arr(i, 1), Replacement:=arr(i, 2), LookAt:=xlPart, _
  14.                 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  15.                 ReplaceFormat:=False
  16.         Next i
  17.         wb.Close True
  18.     End If
  19.     f = Dir
  20. Loop
  21. Application.ScreenUpdating = True
  22. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2021-11-14 15:57 | 显示全部楼层

抱歉,附件没传,现在补上,麻烦再帮忙看看吧,谢谢了。

批量替换.zip

54.86 KB, 下载次数: 4

回复

使用道具 举报

发表于 2021-11-14 17:36 | 显示全部楼层
柒分壊 发表于 2021-11-14 15:57
抱歉,附件没传,现在补上,麻烦再帮忙看看吧,谢谢了。

你先试下代码,我今天估计没时间看。
回复

使用道具 举报

 楼主| 发表于 2021-11-14 17:56 | 显示全部楼层
大灰狼1976 发表于 2021-11-14 17:36
你先试下代码,我今天估计没时间看。

代码试了的,运行出错,我完全看不懂哪里错了。。尴尬。等老师有空给看吧,我可以等
微信截图_20211114175440.png
回复

使用道具 举报

发表于 2021-11-14 18:35 | 显示全部楼层
柒分壊 发表于 2021-11-14 17:56
代码试了的,运行出错,我完全看不懂哪里错了。。尴尬。等老师有空给看吧,我可以等

Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)
回复

使用道具 举报

 楼主| 发表于 2021-11-14 18:53 | 显示全部楼层
cutecpu 发表于 2021-11-14 18:35
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)

成了,谢谢cutecpu大灰狼1976 两位老师。十分感谢
回复

使用道具 举报

发表于 2021-11-15 19:32 | 显示全部楼层
柒分壊 发表于 2021-11-14 17:56
代码试了的,运行出错,我完全看不懂哪里错了。。尴尬。等老师有空给看吧,我可以等

论坛经常会把代码里的反斜杠吃掉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:22 , Processed in 0.223777 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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