从VbScript启动Excel 2010,并安装多个版本的Excel

从VbScript启动Excel 2010,并安装多个版本的Excel,excel,batch-file,command-line,vbscript,Excel,Batch File,Command Line,Vbscript,我有一个VbScript文件,它使用CreateObject(“Excel.Application”)启动Excel,然后运行宏。这样,基于excel的批处理就可以运行,而无需依赖工作簿的打开方法 理想的解决方案(至少在过渡期内)是在Excel2003上运行一些作业,在2010年运行其他作业 我在注册表中查找了一种强制特定版本的方法,但这似乎不起作用。无论如何,使用注册表并不理想,因为两个作业可能同时运行 有没有一种方法可以在VbScript中针对特定的版本?很难做到这一点。注册表将“Excel

我有一个VbScript文件,它使用
CreateObject(“Excel.Application”)
启动Excel,然后运行宏。这样,基于excel的批处理就可以运行,而无需依赖工作簿的打开方法

理想的解决方案(至少在过渡期内)是在Excel2003上运行一些作业,在2010年运行其他作业

我在注册表中查找了一种强制特定版本的方法,但这似乎不起作用。无论如何,使用注册表并不理想,因为两个作业可能同时运行


有没有一种方法可以在VbScript中针对特定的版本?

很难做到这一点。注册表将“Excel.Application”与特定的Excel.exe关联,更改该中间会话可能会导致问题

您可以尝试构建自己的COM对象(您需要这样做,因为您不能在VBScript中直接调用DLL函数),它将在特定版本的excel上调用regsvr。您必须小心地控制它:确保在创建“Excel.Application”对象之前这样做。我的假设是,在那之后,您可以通过COM对象对regsvr进行第二次调用来自由更改注册表。有人甚至可能已经编写了一个基于COM的regsvr。而测试它将是微不足道的

这种方法可能有效:据我所知,CoClass guid仅是COM工厂所需要的。VBScript运行时隐式调用的后续queryInterface调用将依赖于在两个版本中保持一致的接口UUID。但我担心的是,它太脆弱,无法用于生产


我相信你知道,最简单的办法就是拥有两台机器

是的,两台机器的方法是我最初的建议:)虽然不如另一种方法有趣(这可能需要一周的开发时间)。可能不经济。