我试图在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把我带到了这一点,但我很清楚为什么会发生这种情况。是否有任何我错过的步骤或代码中可能导致此问题的错误?