ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用vba代码替换工作簿所在文件夹内的全部工作簿里面的对应文字为新字段?

如何用vba代码替换工作簿所在文件夹内的全部工作簿里面的对应文字为新字段?

作者:绿色风 分类: 时间:2022-08-17 浏览:77
楼主
kevinchengcw
Q: 如何用vba代码替换工作簿所在文件夹内的全部工作簿里面的对应文字为新字段?
A: 代码如下:
  1. Sub test()
  2. Dim Wb As Workbook, Ws As Worksheet, FN$
  3. FN = Dir(ThisWorkbook.Path & "\*.xls?")    '取得当前工作簿所在目录下的excel文档列表
  4. Do While FN <> ""
  5.     If FN <> ThisWorkbook.Name Then    '不处理本工作簿内容
  6.         Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & FN)    '因涉及内容修改,故用打开工作簿的方式
  7.         With Wb
  8.             For Each Ws In .Worksheets    '循环工作簿各表
  9.                 With Ws
  10.                     .Cells.Replace "一组", "1班"    '替换指定字符串为新字段
  11.                 End With
  12.             Next Ws
  13.             .Close True    '保存并关闭工作簿
  14.         End With
  15.     End If
  16.     FN = Dir    '循环到下一文件
  17. Loop
  18. Set Wb = Nothing    '清空项目
  19. End Sub
2楼
0Mouse
K哥写代码的习惯真是非常好!

Workbook的“W”是大写、“b"是小写,所以定义变量的时候就用“Wb”,“Ws”也类似。对于一些最终结果的数组变量,K哥也经常用Result这种有实际意义并且应景的词语,这样代码会让人感觉更易读懂。赞!
上面代码的注解和其前代码之间用了4个空格而不是单用1个,这样避免了拥挤的感觉,看着更舒服。再赞!
采用Set Wb=打开的工作簿使其后续代码的书写显得很精简,同时也有助于提高代码的运行速度,还会避免用Workbooks.open可能发生的“重复打开文档”提示,三赞!

以上代码已属经典,现在鸡蛋里挑点骨头!

1. 首尾可以分别加上
  1. Application.ScreenUpdating = False
  1. Application.ScreenUpdating = True
2. Dir后“*.xls?”里的“?”可以省略,因为Dir对于文件名的判断不够严谨,写“*.xls”就可以打开“*.xls”、“*.xlsx”、“*.xlsm”等不同版本不同格式的Excel文档,这个K哥应该也有印象了,呵呵!
3. 针对有些文档在保存时可能弹出如下的提示框

 
故建议在首尾再分别加上
  1. Application.DisplayAlerts = False
  1. Application.DisplayAlerts = True
3楼
0Mouse
K哥言之有理!
4楼
烟花醉
向各位学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap