[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何替换多个excel表格的指定内容?

本帖最后由 pcl_test 于 2016-7-24 13:49 编辑

在《分类内容》文件夹里

将所有excel(包括所有工作表)文件的内容进行修改:
要求如下:

广州天河供电局→ 广州越秀供电局

珠吉站新出F9调整东圃站F30负荷→ 所在文件夹名称的中文部分

               
082400WP20145213→所在文件夹名称的(数字和字母)部分

如 第一个

082000WP20157001广东人民广播电台一户一表改造项目       

所有  广州天河供电局→ 广州越秀供电局       
       
所有 珠吉站新出F9调整东圃站F30负荷→广东人民广播电台一户一表改造项目

所有 082400WP20145213→082000WP20157001


最好可以告诉方法以便以后可以加以优化 适用于其他类似的工作呢。谢谢~在《分类内容》文件夹里

将所有excel(包括所有工作表)文件的内容进行修改:
要求如下:

广州天河供电局→ 广州越秀供电局

珠吉站新出F9调整东圃站F30负荷→ 所在文件夹名称的中文部分

               
082400WP20145213→所在文件夹名称的(数字和字母)部分

如 第一个

082000WP20157001广东人民广播电台一户一表改造项目       

所有  广州天河供电局→ 广州越秀供电局       
       
所有 珠吉站新出F9调整东圃站F30负荷→广东人民广播电台一户一表改造项目

所有 082400WP20145213→082000WP20157001


最好可以告诉方法以便以后可以加以优化 适用于其他类似的工作呢。谢谢~
文件链接:
http://pan.baidu.com/s/1nt6bvsd

本帖最后由 pcl_test 于 2015-11-13 09:59 编辑

不好意思,没注意到需要把文件夹名的数字去掉,下面是更改之后的。
  1. Dim regEx,oExcel,fso,fo,t1:t1=Time
  2. Set oExcel = CreateObject("Excel.Application")
  3. Set fso = CreateObject("scripting.filesystemobject")
  4. Set regEx = New RegExp:regEx.Pattern="[a-zA-Z0-9]*"
  5. Call mFolder(fso.GetFolder("e:\………………\分类内容"))
  6. Sub mFolder(p)
  7. Dim mName
  8. For Each i In p.Files
  9. if fso.GetExtensionName(i)="xlsx" Or fso.GetExtensionName(i)="xls" Then
  10. mName=regEx.Replace(i.ParentFolder.Name,"")
  11. Call ex(i.path,mName)
  12. End if
  13. next
  14. For Each mf In p.SubFolders
  15. Call mFolder(mf)
  16. Next
  17. End Sub
  18. Sub ex(p,na)
  19. Dim oWb,tmpV
  20. Set oWb = oExcel.Workbooks.Open(p)
  21. For i=1 To oWb.sheets.count
  22. For Each s In oWb.sheets(i).UsedRange
  23. tmpV=s.value
  24. If tmpV<>"" Then
  25. Select Case True
  26. Case  CBool(InStr(tmpV,"广州市天河供电局")):s.value="广州越秀供电局"
  27. Case CBool(InStr(tmpV,"珠吉站新出F9调整东圃站F30负荷")):s.value=na
  28. Case CBool(InStr(tmpV,"082400WP20145213")):s.value="082000WP20157001"
  29. End Select
  30. End If
  31. Next
  32. Next
  33. oWb.Save:oWb.Close:Set oWb=Nothing
  34. End Sub
  35. oExcel.Quit
  36. Set oExcel=Nothing
  37. Set fso=Nothing
  38. Set regEx=Nothing
  39. msgbox "用时"&DateDiff("s",t1,Time)&"秒完成"
复制代码

TOP

本帖最后由 pcl_test 于 2015-11-12 20:00 编辑
  1. //&cls&(dir /b /s *.xls)|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. function replaceStr(xlsFile){
  3.     var m = /\\([a-z0-9]+)([^\\]+)\\[^\\]+\.[^\.]+$/i.exec(xlsFile);
  4.     var objBook = objExcel.Workbooks.open(xlsFile);
  5.     for (var i=1; i<=objBook.sheets.count; i++){
  6.         var enu = new Enumerator(objBook.sheets(i).usedrange)
  7.         for (; !enu.atEnd(); enu.moveNext()){
  8.             var cell = enu.item();
  9.             if (cell.value){
  10.                 var tmpvar = cell.value;
  11.                 cell.value = tmpvar.replace('广州市天河供电局','广州越秀供电局').replace('082400WP20145213',m[1]).replace('珠吉站新出F9调整东圃站F30负荷',m[2]);
  12.             }
  13.         }
  14.     }
  15.     objBook.Save();
  16.     objBook.Close();
  17.     WSH.echo(xlsFile+'\tDone');
  18. }
  19. var  objExcel = new ActiveXObject('Excel.Application');
  20. var files = WScript.StdIn.ReadAll().split(/\r\n/);
  21. for (var i=0; i<files.length; i++)replaceStr(files[i]);
  22. objExcel.Quit();
复制代码

TOP

回复 2# B魔方大人

非常感谢 B魔方大人 大大的热心帮助~ 问题完美解决了~ 非常感谢~

TOP

本帖最后由 dbovsdbo 于 2015-11-14 10:26 编辑

回复 3# pcl_test


非常感谢  pcl_test  大大的热心帮助~ 太厉害了~一次性搞定所有问题~  问题已经完美解决了~  真的非常感谢啊~

TOP

回复 5# dbovsdbo


   请 改为已解决。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

返回列表