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

[问题求助] [已解决]VBS从XLS固定单元格取值并重命名XLS文件名

[复制链接]
发表于 2010-7-14 15:49:06 | 显示全部楼层 |阅读模式
在一个文件中,有一堆的XLS文件,其名字可以分为三类:一类为形如Bok_EP2_A400YY.xls;第二类为形如Inv_ep2_A400YY.xls;第三类为形如Pac_EP2_A400YY.xls。其实BOK,Inv,Pac三份文件为一整套文件。整套文件的判断标准看每一个文件名的第二个“_"后的字符,如果字符相同,就是同一套文件。比如Bok_EP2_A400YY.xls;Inv_ep2_A400YY.xls;Pac_EP2_A400YY.xls其第二个“_"后的字符都为A400YY,那么这三个文件就是同一套文件。

需要取Bok_EP2_A400YY.xls文件的D4单元格值,并将取得的值用来重命名整套文件XLS文件,比如Bok_EP2_A400YY.xls文件的D4单元格为5782042200,那么需要将Bok_EP2_A400YY.xls重命名为5782042200 bok.xls,Inv_ep2_A400YY.xls重命名为5782042200 inv.xls;Pac_EP2_A400YY.xls重命名为5782042200 pac.xls。因为这几个是一套文件。

请看附件。
代码在2楼
感谢qaz123654

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-7-14 17:05:56 | 显示全部楼层
保存为vbs在xls目录运行

  1. On Error Resume Next
  2. Dim fName
  3. Set objFS = CreateObject("Scripting.FileSystemObject")
  4. Set objFolder = objFS.GetFolder(".")
  5. readxls("Bok")
  6. readxls("")
  7. msgbox "完成"
  8. Set objFS = Nothing
  9. Set objFolder = Nothing
  10. Function readxls(str)
  11. For each f in objFolder.Files
  12. fName=split(f.Name,"_")
  13. If right(f.Name,4) = ".xls" and ubound(fName)=2 and fName(0) <> str then
  14. Set oExcel = CreateObject( "Excel.Application")
  15. oExcel.WorkBooks.Open(createobject("wscript.shell").currentdirectory&"\Bok_"&fName(1)&"_"&fName(2))
  16. fName1=oExcel.Cells(4,4).Value
  17. oExcel.Quit
  18. Set oExcel = Nothing
  19. f.Name= fName1&" "&fName(0)&".xls"
  20. End If
  21. Next
  22. End Function
复制代码

[ 本帖最后由 qaz123654 于 2010-7-15 12:40 编辑 ]
 楼主| 发表于 2010-7-14 17:34:49 | 显示全部楼层
谢谢qaz123654
可能是我表达不清楚,在XLS文件夹中并不是每次都有Bok_EP2_A400YY.xls,事实上,路径应该跟VBS文件路径相同。即VBS放在什么文件夹下,就对该文件夹下的XLS文件其作用。
另外,我发现现在的代码只能更改Bok_EP2_A400YY这一套的名字,其它的文件都不能更改。
结果如下图:
发表于 2010-7-14 17:48:01 | 显示全部楼层

回复 3楼 的帖子

是从以Bok_EP2_开头的文件中读取吗?
 楼主| 发表于 2010-7-14 17:49:51 | 显示全部楼层
原帖由 qaz123654 于 2010-7-14 17:48 发表
是从以Bok_EP2_开头的文件中读取吗?

是的,读取所有Bok_EP2_文件中的D4单元格。
 楼主| 发表于 2010-7-15 10:55:28 | 显示全部楼层
再次感谢qaz123654
第一次的代码我发现,每次运行只能更改1套文件。将更改好的文件剪切出去后,再运行VBS文件可以又改一套。也就是每次运行,只能更改一套文件而不能循环更改。

第二次的代码,运行后,只能更改BOK文件,其它配套的的INV,PAC不能更改,而且,好像只能改几个BOK文件,其它的BOK文件没有变化。第二次的运行结果;
发表于 2010-7-15 12:46:25 | 显示全部楼层
代码更新到2楼,测试了下似乎可用,效率就差了点
 楼主| 发表于 2010-7-15 14:32:54 | 显示全部楼层
原帖由 qaz123654 于 2010-7-15 12:46 发表
代码更新到2楼,测试了下似乎可用,效率就差了点


已经可以了,多谢qaz123654.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:45 , Processed in 0.026209 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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