ActiveX组件无法创建对象VBA运行时错误

时间:2015-05-05 03:49:44

标签: c# excel vba excel-vba

第1步:创建Excel 2010加载项

我创建了一个新项目,Excel 2010加载项,.Net 4框架

我在其中添加了一个类文件" Name.cs",interface" iName.cs"并添加了一个功能

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface iName
{
string getName();
}
[ClassInterface(ClassInterfaceType.None)]
public class Name 
{
public string getName()
{
 return "Hello";
} 
}

第2步:配置构建事件

我配置了专业版的构建事件

"%Windir%\Microsoft.NET\Framework\v4.0.30319\regasm" /codebase /tlb 
"$(MSBuildProjectDirectory)\$(OutputPath)$(AssemblyName).dll"

这将注册Dll,以便它可以在Excel的references列中使用

第3步:在Excel宏中添加引用

我在工具中创建了一个模块 - >参考我在构建Excel加载项目后添加了NameProvider(该程序集/项目的名称)加载项

我尝试为添加的引用创建一个对象

Public Sub test()
Dim nameObj as NameProvider.Name
Dim name as string
Set nameObj = new NameProvider.Name  'error 429 occurs here
name = nameObj.getName()  'getName function automatically comes after .
End Sub

1 个答案:

答案 0 :(得分:1)

对于Office 64bit,您需要将程序集编译为x64兼容,并使用Framework 64 文件夹中的 regasm 将其注册到64位框架。

"%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" /codebase /tlb 
"$(MSBuildProjectDirectory)\$(OutputPath)$(AssemblyName).dll"

%Windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ regasm - > %WINDIR%\ Microsoft.NET \框架的 64 \ v4.0.30319 \ regasm