想要实现如下的两个目标:

1.通过 vbs判断某路径下的数个excel文件是03版本还是07版本,如果有文件是03的,跳出,如果都是07的则调用某 批处理文件.

2.同上类似,不过是单个判断,指定文件名的excel文件,判断其版本,是03跳出,07的则调用 批处理.

EXCEL2007的文件扩展名和2003不同。2003是XLS,2007是XLSX。即使是在EXCEL2007里存为XLS,那它也是2003的格式。所以这个不会有错。所以先DIR”路径\*.exl*”,然后循环dir,把所有EXCEL文件的名称得到,在循环中赋给临时变量,比如theforeverOncsdn。这个具体方法网上有很多现成的遍历文件夹内文件的例程,很多是使用FSO的方法,大体也差不多,只要能实现都可以。
在得到每个文件名的时候,就可以截取扩展名判断是XLS还是XLSX。前者则为2003,后者则为2007.

这个最通用的应该是自己解析PE文件格式,从中读取到excel.exe的版本信息,当然也可以用一些取巧的方法来实现,例如:
VBScript code:
Set oVer = WScript.GetObject(“res://C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE/16/1″)
WScript.Sleep 500
‘oInfo = Split(oVer.body.innerHTML,Chr(01))
‘For i = 1 To UBound(oInfo)
‘WScript.Echo oInfo(i)
‘Next
WScript.Echo oVer.body.innerhtml
其中就包含了excel的版本。
另外一个方法则是判断excel.exe的创建时间来判断版本,只需要用到fso对象即可。

但是上面的方法好像是不那么对的,因为“Set oVer = WScript.GetObject(“res://C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE/16/1″) ”这个方法只是能取到本机安装的EXCEL的版本,但不是具体每个EXCEL的版本,意义完全是两码事,如果安的是2007,不代表没有2003的EXCEL文档。

“另外一个方法则是判断excel.exe的创建时间来判断版本,只需要用到fso对象即可.”
这个根本是不行的。EXCEL.EXE的创建时间?这个根本说明不了什么,文件每当被复制时都可能重新设置时间,这个取决于系统的设置,有的设置是保留原始创建时间的,但有的设置就不会保留而使用复制时的时间。

“最通用的应该是自己解析PE文件格式”。PE文件是指可执行文件,EXE和DLL这样的。如果用HEX编辑器看XLS,会发觉有点像,但根本不是。不过排除这个认定错误,就说是用文件的文件头信息的话,的确是最准确的,因为扩展名也可以改(不过改了肯定会影响使用,所以正常来说不会故意改成不好使,只不过说有这种极端的可能性存在),而文件数据,其实也是可以改的,但改了就可能完全不能用了。

而且“Set oVer = WScript.GetObject(“res://C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE/16/1″) ”
而且这个方法如果只这样写,也可能完全失效。因为安装路径不可能固定就是这样,用户会自己选择驱动器和安装目录名称。如果是取本机的EXCEL版本,取注册表里EXCEL注册键的版本信息就可以。

另外,关于EXCEL文件格式,上面说了肯定不是PE,而且,当初对XLSX也稍微研究了一下,发现这个文件,可以改成ZIP扩展名使用,没错,它就是一个压缩包(所以同样内容,用EXCEL2007格式保存反而比EXCEL2003格式更小,这正是导致我这个发现的判断线索)。里面按组织存了若干文件,十分有趣,意义很明显,而且都可以编辑,基本都是XML格式,只不过不是很直观,如下的代码就能完全实现这个目标,如下:

VBScript code:
Function getStdOut(exeCstr)
on error resume next
Set ws = CreateObject("WScript.Shell")
Set oStdOut = ws.Exec(exeCstr).StdOut
Do until oStdOut.AtEndOfStream
' getStdOut = getStdOut & oStdOut.Read(1)
' getStdOut = getStdOut & oStdOut.ReadLine()
getStdOut = oStdOut.ReadAll()
Loop
End Function

Function get7zType(ExePath7z, FileName)
if ExePath7z="" then : ExePath7z="D:\7z-920\7z.exe" : end if ' Note: "ExePath7z" must be a short path name
oType = getStdOut("cmd.exe /k " & ExePath7z & " l -slt """& FileName &""" | findstr /I ""^Type.=."" && exit")
get7zType =Right(oType, Len(oType)-6)
End Function
msgbox get7zType("" , wscript.arguments(0))

VBS判断excel版本相关推荐

  1. php判断版本根据版本调用不同,C#_C#自动判断Excel版本使用不同的连接字符串,用OLEDB通过设置连接字符串可 - phpStudy...

    C#自动判断Excel版本使用不同的连接字符串 用OLEDB通过设置连接字符串可以像读取sqlserver一样将excel中的数据读取出来,但是excel2003和excel2007/2010的连接字 ...

  2. Java 常用的工具类—判断Excel版本读取Excel/CSV文件

    以下内容均来自实际项目需求,记录下,网上找的读取Excel会出现不少问题,下面代码是经过好多次测试改进的符合现在项目的代码,如有不同要求,请自行修改,代码均只去掉了包名. 注:我们的Excel 第一行 ...

  3. POI Workbook接口和HSSFWorkbook对象和XSSFWorkbook对象操作相应excel版本

    由于HSSFWorkbook只能操作excel2003一下版本,XSSFWorkbook只能操作excel2007以上版本,所以利用Workbook接口创建对应的对象操作excel来处理兼容性 @Te ...

  4. NPOI 导入导出和Excel版本,错误文件扩展名和文件的格式不匹配

    读取时可以自动判断Excel版本 IWorkbook workbook = NPOI.SS.UserModel.WorkbookFactory.Create(fs); 调用这个方法,内部自动判断Exc ...

  5. 【springboot】上传并解析excel表,使用postman测试上传文件,解决excel版本报错问题

    声明:博客代码只是实际项目的一部分,项目是前后端分离的,这篇博客中将记录如何使用工具类中提供的解析excel表格数据,并使用postman测试上传excel表的接口. 在项目pom.xml文件中添加依 ...

  6. java excel解析:poi与jxl的区别(excel版本问题:xls,xlsx)

    前不久做了excel的导入导出并对其进行解析.这也是第一次做这个,查阅了一堆资料,方法也有很多种,大多数的方法就是使用poi或者jxl,由于一开始poi的jar包怎么都找不对,而且有人说jxl消耗内存 ...

  7. excel版本问题解决方案

    在实际的开发中遇到过的问题,简单的描述一下.就是需要解析Excel 文件,读取数据入库,并且将文件也入库(文件路径).解析完成后,文件入库的数据莫名其妙的多了一个文件名0000000000000 的文 ...

  8. VBS遍历Excel工作表的方法

    这篇文章主要介绍了VBS遍历Excel工作表的实现代码,需要的朋友可以参考下 核心代码 '****************************************** '拖拽文件,获取文件路径 ...

  9. HMTL判断ie版本

    html判断IE版本 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> 2. <!--[if IE]> ...

最新文章

  1. 深度学习(六)caffe入门学习
  2. 线程的start()方法
  3. java附加属性_Java 9附加流
  4. C语言中的常用文件操作
  5. 七步从AngularJS菜鸟到专家(6):服务
  6. android -- 蓝牙 bluetooth (四)OPP文件传输
  7. 现代通信原理A.3:随机信号的功率谱估计
  8. C盘Administrator中 .m2/repository里面是什么
  9. ERP系统应用的流程与步骤
  10. Win32 CMD批处理命令
  11. LINQ的Order By (Descending) 操作
  12. vertica用户自定义扩展介绍
  13. UVa Problem 123 - Searching Quickly
  14. 微服务架构的使用场景
  15. Linux下copy命令,并重命名
  16. “高精尖”智慧钢厂轻松打造!图扑软件数字孪生yyds
  17. QQ群视频出现imsdk登录失败的解决方法
  18. 区块链的架构是如何定义的?
  19. MyBatis Plus简介和入门案例
  20. iOS 添加第三方字体库

热门文章

  1. 12月21日云栖精选夜读 | 推荐:一款分布式的对象存储服务
  2. Image.FromStream与Image.FromFile使用区别
  3. 网页使用的WindowMediaPlayer插件的问题22D6F312-B0F6-11D0-94AB-0080C74C7E95
  4. 警告:面临潜在的安全风险_HTML5网站展示:48个潜在的Flash演示
  5. 怎么校验一个数是否是素数(质数)以及如何更高效率的校验
  6. 天下无云第二步,逐像素图片合成
  7. 使目标朝向摄像机,随着摄像机转动
  8. 绘画作品/系统赏析与评论
  9. 今天你《ZAO》了吗?
  10. 龙虎榜股票数据分析软件机构席位游资主力意图趋势选股短线涨停