将 vs 2012 C# 与 visio 2007 集成时出现 Com 错误

Posted

技术标签:

【中文标题】将 vs 2012 C# 与 visio 2007 集成时出现 Com 错误【英文标题】:Com Error while integrating vs 2012 C# with visio 2007 【发布时间】:2013-08-20 10:25:00 【问题描述】:

我正在尝试将 Visio 2007 与 C#(VS 2012 和 windows 7 操作系统)集成,但在运行代码时出现错误

无法将“Microsoft.Office.Interop.Visio.ApplicationClass”类型的 COM 对象转换为接口类型“Microsoft.Office.Interop.Visio.IVApplication”。此操作失败,因为 IID 为“000D0700-0000-0000-C000-000000000046”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:库未注册。 (来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

代码 sn-p:

使用 IVisio = Microsoft.Office.Interop.Visio;

内部方法

 var app = new IVisio.ApplicationClass();
        var docs = app.Documents;  (Error coming at this point)
        var doc = docs.Add("");

        var page = app.ActivePage;
        var shape0 = page.DrawRectangle(1, 2, 6, 3);
        shape0.Text = "Hello World";

我的机器上安装了 Microsoft Office 2010 和 Visio 2007。

参考库:Microsoft.Office.Interop.Visio(尝试了 Microsoft Visio 12 类型库版本 4.12.0.0 (visio 2007) 和版本 14.0.0.0 (visio 2010),但出现相同的错误。)

【问题讨论】:

【参考方案1】:

我已经删除了 Office 2010 和 visio 2007 ,重新启动机器并再次安装了 office 2010 和 visio 2007 软件。这已经奏效了。

我一直在寻找除此之外的任何其他解决方案。

【讨论】:

以上是关于将 vs 2012 C# 与 visio 2007 集成时出现 Com 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VS 2012 创建 (VSTO) Office 2007 加载项?

什么是 office Visio2007

自己用VS2012写了一个C#程序,怎么打包成安装文件啊?

利用Visio绘制数据流图与组织结构图

怎么将pdf格式的图转换成visio

在winword2007中关于visio和mathtype公式编辑的问题