我有以下代码用于从 Excel 创建 Visio 实例。它适用于我安装了单一版本 Visio 的计算机,但在某些计算机上我安装了 2 个版本(2010 和 2016)。在这些计算机上,它无法运行,并出现错误“对象‘IVApplication’的方法‘Visible’失败”。当我检查 AppVisio 时它是空的,我猜测这是因为这两个应用程序都是 visio.exe。有没有办法从特定路径创建对象,或者安装2个版本时创建对象?
Set AppVisio = CreateObject("visio.application")
AppVisio.Visible = False
Set docsObj = AppVisio.Documents
最佳答案
我相信有一些选择。
解决方案 1(我推荐这个)。在开发计算机上仅安装 Visio 2010(并卸载 2016)。无论如何,使用您希望应用程序在开发计算机上运行的最低版本是最安全的。在 Excel 中添加对 Visio 2010 类型库的引用。删除对 Visio 21016 类型库的引用。 Visio 版本向上兼容,因此即使在装有 Visio 2016 的计算机上,代码也应该正常运行。
解决方案 2. 使用后期绑定(bind)。从 Excel 项目中完全删除对 Visio 的引用,并仅使用类似脚本的访问。在这种情况下,您将失去自动完成功能。如果您的应用程序规模不大,那应该不是问题。
解决方案 3。(如果您想运行特定版本)。您可以从程序文件(像任何其他可执行文件一样)启动 Visio 应用程序,然后使用“GetObject(...)”而不是“CreateObject(...)”连接到它
顺便说一句,有一种更好的方法将 Visio 作为隐形应用程序运行(无需闪烁):
设置 appVisio = CreateObject("Visio.InvisibleApp")
关于vba - 安装 2 个版本时在 vba 中创建 Visio 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417848/