Excel精英培训网

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

[已解决]区域搜索替换的宏

[复制链接]
发表于 2017-6-4 16:09 | 显示全部楼层 |阅读模式
因为工作需要 , 表有几种,需要区域搜索替换。(替换要求:因为我想一次全部替换,包括有文本框里的文字。表格有几种,替换的内容都不一样)

比如表中的A 替换成B ,S替换成D。F替换成G。
但是有个表中没有A ,这个宏就是错误的。(重点、重点、重点)。
录制了几次。都是错误的
最佳答案
2017-6-5 16:11
本帖最后由 chart888 于 2017-6-5 16:12 编辑
  1. Private Sub CommandButton1_Click()

  2. Dim myPath$, myFile$, AK As Workbook, aRow%, tRow%, i As Integer
  3. Application.ScreenUpdating = False        '冻结屏幕,以防屏幕抖动
  4. myPath = ThisWorkbook.Path & ""          '把文件路径定义给变量
  5. myFile = Dir(myPath & "*.xls")            '依次找寻指定路径中的*.xls文件
  6. Do While myFile <> ""                     '当指定路径中有文件时进行循环
  7.     If myFile <> ThisWorkbook.Name Then
  8.         Set AK = Workbooks.Open(myPath & myFile)          '打开符合要求的文件
  9.         m = ActiveSheet.UsedRange.Rows.Count
  10.         n = ActiveSheet.UsedRange.Columns.Count
  11.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="A", Replacement:="b", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  12.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="s", Replacement:="d", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  13.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="f", Replacement:="g", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  14.         Workbooks(myFile).Close savechanges:=True               '关闭源工作簿
  15.     End If
  16.     myFile = Dir                                   '找寻下一个*.xls文件
  17. Loop
  18. Application.ScreenUpdating = True                 '冻结屏幕,此类语句一般成对使用
  19. MsgBox "替换完成,请查看!", 64, "提示"
  20. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-4 16:56 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-6-5 10:17 | 显示全部楼层
表格已经上传。  有两个表格。有两个最终希望能通过宏来达到的表格。一共四个表格。感谢帮助

替换.rar

23.95 KB, 下载次数: 5

回复

使用道具 举报

发表于 2017-6-5 16:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chart888 于 2017-6-5 16:12 编辑
  1. Private Sub CommandButton1_Click()

  2. Dim myPath$, myFile$, AK As Workbook, aRow%, tRow%, i As Integer
  3. Application.ScreenUpdating = False        '冻结屏幕,以防屏幕抖动
  4. myPath = ThisWorkbook.Path & ""          '把文件路径定义给变量
  5. myFile = Dir(myPath & "*.xls")            '依次找寻指定路径中的*.xls文件
  6. Do While myFile <> ""                     '当指定路径中有文件时进行循环
  7.     If myFile <> ThisWorkbook.Name Then
  8.         Set AK = Workbooks.Open(myPath & myFile)          '打开符合要求的文件
  9.         m = ActiveSheet.UsedRange.Rows.Count
  10.         n = ActiveSheet.UsedRange.Columns.Count
  11.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="A", Replacement:="b", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  12.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="s", Replacement:="d", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  13.         AK.ActiveSheet.Range("A1").Resize(m, n).Replace What:="f", Replacement:="g", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  14.         Workbooks(myFile).Close savechanges:=True               '关闭源工作簿
  15.     End If
  16.     myFile = Dir                                   '找寻下一个*.xls文件
  17. Loop
  18. Application.ScreenUpdating = True                 '冻结屏幕,此类语句一般成对使用
  19. MsgBox "替换完成,请查看!", 64, "提示"
  20. End Sub
复制代码

替换.zip

33.73 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2017-6-8 16:18 | 显示全部楼层

可以在加一个选取范围吗?比如在10行到20行的范围内
回复

使用道具 举报

发表于 2017-6-8 16:30 | 显示全部楼层
承诺与谁 发表于 2017-6-8 16:18
可以在加一个选取范围吗?比如在10行到20行的范围内
  1. Private Sub CommandButton1_Click()
  2. Dim myPath$, myFile$, AK As Workbook, aRow%, tRow%, i As Integer
  3. Dim m1, m2
  4. Application.ScreenUpdating = False        '冻结屏幕,以防屏幕抖动

  5. sInt = Application.InputBox(Prompt:="输入起始行数", Type:=1)
  6.     If Len(Trim(sInt)) > 0 Then
  7.         m1 = sInt
  8.     Else
  9.       MsgBox Prompt:="您没有输入有效的行数" & Chr(10) _
  10.             & "正确的月份格式为:(例:1)", Buttons:=vbOKOnly + vbInformation, _
  11.             Title:="错误提示"
  12.             Exit Sub
  13.     End If
  14. sInt = Application.InputBox(Prompt:="输入起始行数", Type:=1)
  15.     If Len(Trim(sInt)) > 0 Then
  16.         m2 = sInt
  17.     Else
  18.       MsgBox Prompt:="您没有输入有效的行数" & Chr(10) _
  19.             & "正确的月份格式为:(例:1)", Buttons:=vbOKOnly + vbInformation, _
  20.             Title:="错误提示"
  21.             Exit Sub
  22.     End If
  23. myPath = ThisWorkbook.Path & ""          '把文件路径定义给变量
  24. myFile = Dir(myPath & "*.xls")            '依次找寻指定路径中的*.xls文件
  25. Do While myFile <> ""                     '当指定路径中有文件时进行循环
  26.     If myFile <> ThisWorkbook.Name Then
  27.         Set AK = Workbooks.Open(myPath & myFile)          '打开符合要求的文件
  28.         m = ActiveSheet.UsedRange.Rows.Count
  29.         n = ActiveSheet.UsedRange.Columns.Count
  30.         AK.ActiveSheet.Cells(m1, 1).Resize(m2 - m1 + 1, n).Replace What:="A", Replacement:="b", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  31.         AK.ActiveSheet.Cells(m1, 1).Resize(m2 - m1 + 1, n).Replace What:="s", Replacement:="d", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  32.         AK.ActiveSheet.Cells(m1, 1).Resize(m2 - m1 + 1, n).Replace What:="f", Replacement:="g", LookAt:=xlPart, MatchCase:=False, MatchByte:=False
  33.         Workbooks(myFile).Close savechanges:=True               '关闭源工作簿
  34.     End If
  35.     myFile = Dir                                   '找寻下一个*.xls文件
  36. Loop
  37. Application.ScreenUpdating = True                 '冻结屏幕,此类语句一般成对使用
  38. MsgBox "替换完成,请查看!", 64, "提示"
  39. End Sub
复制代码
满意给个最佳

替换.zip

37.2 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2017-6-8 16:42 | 显示全部楼层

区域范围我已经找到了。麻烦大神能说下这个代码能替换工作簿中的所有工作表吗?(代码是多少呢)还是说只有第一个工作表?
回复

使用道具 举报

发表于 2017-6-8 16:43 | 显示全部楼层
承诺与谁 发表于 2017-6-8 16:42
区域范围我已经找到了。麻烦大神能说下这个代码能替换工作簿中的所有工作表吗?(代码是多少呢)还是说只 ...

如果需要可以追加
加一个在工作表循环就好
回复

使用道具 举报

 楼主| 发表于 2017-6-18 10:20 | 显示全部楼层
chart888 发表于 2017-6-8 16:43
如果需要可以追加
加一个在工作表循环就好

大神!我想这个VBA 能够替换文件夹下(包含下属的子文件夹的EXCEL文件),需要怎样的代码呢?谢谢,十分感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:43 , Processed in 0.449403 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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