vba - 安装 2 个版本时在 vba 中创建 Visio 实例

标签 vba visio createobject

我有以下代码用于从 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/

相关文章:

vba - Excel - 通过 VBA 显示 ComboBox DropDown

excel - 避免 'for without next' 结束子

c# - Visio 形状 - 获取 X、Y 位置

.net - Visio 中的项目依赖关系图

vba - 不活动后自动关闭工作簿

excel - 仅使用 VBA : Error "Unable to get the PasteSpecial property of the Range class 粘贴值

com - 发现已注册的 COM 组件

vbscript - vbs 的 CreateObject() 对象列表

layout - 维西奥 2010 : Prevent Co-Linear Connector Routes

javascript - 无法在 'createObjectURL' : 上执行 'URL'