找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26421|回复: 5

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

[复制链接]
发表于 2015-11-12 13:18:08 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2015-11-12 17:11:58 | 显示全部楼层
本帖最后由 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)&"秒完成"
复制代码
发表于 2015-11-12 19:24:28 | 显示全部楼层
本帖最后由 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();
复制代码
 楼主| 发表于 2015-11-14 10:17:47 | 显示全部楼层
回复 2# B魔方大人

非常感谢 B魔方大人 大大的热心帮助~ 问题完美解决了~ 非常感谢~
 楼主| 发表于 2015-11-14 10:19:18 | 显示全部楼层
本帖最后由 dbovsdbo 于 2015-11-14 10:26 编辑

回复 3# pcl_test


非常感谢  pcl_test  大大的热心帮助~ 太厉害了~一次性搞定所有问题~  问题已经完美解决了~  真的非常感谢啊~
发表于 2015-11-14 10:51:11 | 显示全部楼层
回复 5# dbovsdbo


   请 改为已解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 09:44 , Processed in 0.033594 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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