【问题标题】:Launching Excel 2010 from VbScript with multiple versions of Excel installed从安装了多个版本的 Excel 的 VbScript 启动 Excel 2010
【发布时间】:2014-07-17 10:13:23
【问题描述】:

我有一个 VbScript 文件,它使用 CreateObject("Excel.Application") 启动 Excel 然后运行宏。这样,无需依赖 Workbook_open 方法即可运行基于 excel 的批处理。

理想的解决方案是让一些作业在 Excel 2003 上运行,而另一些在 2010 上运行,至少在过渡时期是这样。

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

有没有办法在 VbScript 中定位特定版本?

【问题讨论】:

    标签: excel batch-file command-line vbscript


    【解决方案1】:

    要做到这一点并不容易。注册表会将“Excel.Application”与特定的 excel.exe 相关联,并且更改该会话中间可能会导致问题。

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

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

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

    【讨论】:

    • 是的,两机方法是我最初的建议 :)
    • 虽然不如其他方式有趣(这可能是一周的开发时间)。可能不经济。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多