VBA调用C#DLL Interop获取ActiveX错误429

时间:2015-12-10 18:05:17

标签: c# vba com-interop

我试图在VBA中为Word文档创建一个C#DLL。

以下是DLL的来源:

from azure import *
from azure.storage import *

blob_service = BlobService(account_name='<accountname>', account_key='<accountkey>')
next_marker = None
while True:
    blobs = blob_service.list_blobs('<containername>', maxresults=100, marker=next_marker)
    next_marker = blobs.next_marker
    print(next_marker)
    print(len(blobs))
    if next_marker is None:
        break
print "done"

我以管理员身份运行VS2015社区。我设置了“使组件COM-Visible&#39;在“程序集设置”中,在“构建”选项卡中设置“注册COM互操作”。之后,我使用\ codebase和\ tbl标签运行RegAsm.exe。 Regasm成功地运行了。

我创建了一个新的word文档,添加了对VBAtoCSharpExample的引用并编写了这个模块using System; using System.Runtime.InteropServices; namespace VBAtoCsharpExample { [Guid("0F2E10D5-987B-4D86-BC8B-14FFC280EC13")] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] [ComVisible(true)] public interface IComCalculator { [DispId(1)] int Add(int number1, int number2); } [Guid("D68DEB4E-A53A-4FED-BB60-BC56384B7812")] [ClassInterface(ClassInterfaceType.None)] [ComVisible(true)] [ProgId("VBAtoCSharpExample.Calculator")] public class Calculator : IComCalculator { public int Add(int number1, int number2) { return number1 + number2; } } }

当我运行此模块时,我得到&#34;运行时错误&#39; 429&#39;:ActiveX组件无法创建对象&#34;在这一行:


Sub Main()
    Dim x As Integer
    Dim objCalculator As VBAtoCSharpExample.Calculator
    Set objCalculator = New VBAtoCSharpExample.Calculator
    ''Set objCalculator = CreateObject("VBAtoCSharpExample.Calculator")
    x = objCalculator.Add(1, 2)
    ActiveDocument.Range.Text = CStr(x)
End Sub

这也发生在另一条评论中。我的google-fu把我带到了这一点,但我很清楚为什么会发生这种情况。是否有任何我错过的步骤或代码中可能导致此问题的错误?

0 个答案:

没有答案