从VBA调用一个简单的C#DLL遇到严重问题,无法让它工作 . 尝试了几件似乎适用于其他人的事情,但没有运气 .
机器1:Windows 7,Visual Sudio 2013 Express,Office 2010
这是我的C#代码:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace DLLTester3
{
[Guid("6A40F90B-B8FC-4F4A-9B4C-850279D45B3B")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("DLLTester3.DoSometing")]
public class DLLTester3
{
public void DoSometing()
{
MessageBox.Show("Hello world");
}
}
}
将“Make assembly COM-visible”和“Register form COM interop”设置为true,签署程序集 .
从Excel运行以下VBA按预期方式工作:
Option Explicit
Sub DoIt()
Dim Something As DLLTester3.DLLTester3
Set Something = New DLLTester3.DLLTester3
Call Something.DoSometing
End Sub
机器2:Windows 10,Office 2013
机器3:Windows Server 2008,Office 2010
复制DLL,使用带有 /codebase
选项的REGASM注册它,两台机器都给出错误429 .
欢迎提出建议!
1 回答
根据您的所作所为:
你添加了ProgId
您已添加GUID
你已经使用了dll
COM可见
你需要这样做:
C:\ VBS \ DNFW4 \ gacutil.exe / i XXX.dll
C:\ VBS \ DNFW4 \ RegAsm.exe XXX.dll
现在你可以使用vbs来测试它: