我有一个VbScript文件,它使用CreateObject("Excel.Application")
启动Excel然后运行宏。这样,可以在不依赖Workbook_open方法的情况下运行基于excel的批处理。
至少在过渡期内,理想的解决方案是在Excel 2003上运行一些工作,在2010年运行其他工作。
我已经在注册表中查找了强制特定版本的方法,但这似乎没有用。无论如何使用注册表并不理想,因为两个作业可以同时运行。
有没有办法在VbScript中定位特定版本?
答案 0 :(得分:1)
不可能轻易做到这一点。注册表将关联" Excel.Application"使用特定的excel.exe并更改中间会话可能会导致问题。
您可以尝试构建您自己的COM对象(您需要这样做,因为您无法直接在VBScript中调用DLL函数),这将在特定版本的Excel上调用regsvr。您必须仔细控制:确保在创建" Excel.Application"之前执行此操作。宾语。我的假设是,在此之后,您可以通过COM对象第二次调用regsvr来自由更改注册表。有人甚至可能已经编写了一个基于COM的regsvr。测试它将是微不足道的。
这种方法可能有效:据我所知,COM工厂只需要CoClass GUID。 VBScript运行时隐式调用的后续queryInterface调用将依赖于两个版本之间一致的接口UUID。但我担心的是,它太脆弱而无法用于生产。
最简单的事情,就是我确定你知道的,就是拥有两台机器!