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

我有一个使用CreateObject("Excel.Application")启动Excel,然后运行macros的VbScript文件。 这样,基于Excel的批处理可以在不依赖于Workbook_open方法的情况下运行。

至less在过渡期间,理想的解决scheme是在Excel 2003上运行一些作业,在2010年运行其他的作业。

我已经在registry中寻找一种强制特定版本的方法,但这似乎并没有工作。 无论如何,使用registry是不理想的,因为两个作业可以同时运行。

有没有一种方法在VbScript中定位特定的版本?

这是不可能的。 registry将关联“Excel.Application”与特定的excel.exe和更改中期会话可能会导致问题。

可以尝试构build自己的COM对象(您需要这样做,因为您无法直接在VBScript中调用DLL函数),这将调用特定版本的Excel中的regsvr。 您将必须谨慎地控制:确保在创build“Excel.Application”对象之前执行此操作。 我的假设是,在那之后,你可以自由地通过COM对象第二次调用regsvr来更改registry。 有人甚至可能已经写了一个基于COM的regsvr。 testing它将是微不足道的。

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

最简单的事情,我相信你知道,将有两台机器!