标题: [文本处理] [已解决]批处理如何替换多个excel表格的指定内容? [打印本页]
作者: dbovsdbo 时间: 2015-11-12 13:18 标题: [已解决]批处理如何替换多个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
作者: B魔方大人 时间: 2015-11-12 17:11
本帖最后由 pcl_test 于 2015-11-13 09:59 编辑
不好意思,没注意到需要把文件夹名的数字去掉,下面是更改之后的。- Dim regEx,oExcel,fso,fo,t1:t1=Time
- Set oExcel = CreateObject("Excel.Application")
- Set fso = CreateObject("scripting.filesystemobject")
- Set regEx = New RegExp:regEx.Pattern="[a-zA-Z0-9]*"
- Call mFolder(fso.GetFolder("e:\………………\分类内容"))
-
- Sub mFolder(p)
- Dim mName
- For Each i In p.Files
- if fso.GetExtensionName(i)="xlsx" Or fso.GetExtensionName(i)="xls" Then
- mName=regEx.Replace(i.ParentFolder.Name,"")
- Call ex(i.path,mName)
- End if
- next
- For Each mf In p.SubFolders
- Call mFolder(mf)
- Next
- End Sub
-
- Sub ex(p,na)
- Dim oWb,tmpV
- Set oWb = oExcel.Workbooks.Open(p)
- For i=1 To oWb.sheets.count
- For Each s In oWb.sheets(i).UsedRange
- tmpV=s.value
- If tmpV<>"" Then
- Select Case True
- Case CBool(InStr(tmpV,"广州市天河供电局")):s.value="广州越秀供电局"
- Case CBool(InStr(tmpV,"珠吉站新出F9调整东圃站F30负荷")):s.value=na
- Case CBool(InStr(tmpV,"082400WP20145213")):s.value="082000WP20157001"
- End Select
- End If
- Next
- Next
- oWb.Save:oWb.Close:Set oWb=Nothing
- End Sub
-
- oExcel.Quit
- Set oExcel=Nothing
- Set fso=Nothing
- Set regEx=Nothing
- msgbox "用时"&DateDiff("s",t1,Time)&"秒完成"
复制代码
作者: pcl_test 时间: 2015-11-12 19:24
本帖最后由 pcl_test 于 2015-11-12 20:00 编辑
- //&cls&(dir /b /s *.xls)|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- function replaceStr(xlsFile){
- var m = /\\([a-z0-9]+)([^\\]+)\\[^\\]+\.[^\.]+$/i.exec(xlsFile);
- var objBook = objExcel.Workbooks.open(xlsFile);
- for (var i=1; i<=objBook.sheets.count; i++){
- var enu = new Enumerator(objBook.sheets(i).usedrange)
- for (; !enu.atEnd(); enu.moveNext()){
- var cell = enu.item();
- if (cell.value){
- var tmpvar = cell.value;
- cell.value = tmpvar.replace('广州市天河供电局','广州越秀供电局').replace('082400WP20145213',m[1]).replace('珠吉站新出F9调整东圃站F30负荷',m[2]);
- }
- }
- }
- objBook.Save();
- objBook.Close();
- WSH.echo(xlsFile+'\tDone');
- }
-
- var objExcel = new ActiveXObject('Excel.Application');
- var files = WScript.StdIn.ReadAll().split(/\r\n/);
- for (var i=0; i<files.length; i++)replaceStr(files[i]);
- objExcel.Quit();
复制代码
作者: dbovsdbo 时间: 2015-11-14 10:17
回复 2# B魔方大人
非常感谢 B魔方大人 大大的热心帮助~ 问题完美解决了~ 非常感谢~
作者: dbovsdbo 时间: 2015-11-14 10:19
本帖最后由 dbovsdbo 于 2015-11-14 10:26 编辑
回复 3# pcl_test
非常感谢 pcl_test 大大的热心帮助~ 太厉害了~一次性搞定所有问题~ 问题已经完美解决了~ 真的非常感谢啊~
作者: 依山居 时间: 2015-11-14 10:51
回复 5# dbovsdbo
请 改为已解决。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |