C# 运行时错误';429';activex组件可以';不创建对象

C# 运行时错误';429';activex组件可以';不创建对象,c#,.net,excel,vba,excel-2007,C#,.net,Excel,Vba,Excel 2007,我创建了一个简单的应用程序.net类,它将excel电子表格转换为pdf文件。然后我得到一个Excel2007应用程序来调用这个dll,它在我的开发机器上运行良好 但是,当我将其部署到同时具有.net framework和Excel 2007的Vista计算机上时,会出现以下错误: run-time error '429' activex component can't create object 尽管我是这台机器的管理员,但我似乎无法将已签名的.net DLL放入GAC 有人能帮我解决这个问

我创建了一个简单的应用程序.net类,它将excel电子表格转换为pdf文件。然后我得到一个Excel2007应用程序来调用这个dll,它在我的开发机器上运行良好

但是,当我将其部署到同时具有.net framework和Excel 2007的Vista计算机上时,会出现以下错误:

run-time error '429' activex component can't create object
尽管我是这台机器的管理员,但我似乎无法将已签名的.net DLL放入GAC

有人能帮我解决这个问题吗

这就是我从Excel2007调用.net
tlb
文件的方式

Sub TestSub()<br>
 &nbsp;Dim printLibraryTest As PrintLibrary.Print<br>
 &nbsp;Set printLibraryTest = New PrintLibrary.Print <br>
 &nbsp; printLibraryTest.ConvertExcelToPdf <br>
End Sub <br>
一年后

这是否可能是由于与此相同的原因:

发生错误的原因是目标计算机缺少应用程序中使用的控件对象的许可证信息[…],这将生成包含Winsock控件正确版本的安装程序包。但是,除非控件的实例放在表单上,否则控件的许可证密钥不会编译到应用程序中。当您尝试在运行时实例化对象时,应用程序无法提供许可证密钥,代码将失败。例如,以下代码将在设计时正常运行,但在未安装Visual Basic的计算机上运行时将失败

这里似乎与您的案例有关:

  • 相同的错误号和消息
  • 同时发生:部署到非开发机器时
解决方法似乎是将控件放置在窗体上


也请查看这篇文章:

一年后

这是否可能是由于与此相同的原因:

发生错误的原因是目标计算机缺少应用程序中使用的控件对象的许可证信息[…],这将生成包含Winsock控件正确版本的安装程序包。但是,除非控件的实例放在表单上,否则控件的许可证密钥不会编译到应用程序中。当您尝试在运行时实例化对象时,应用程序无法提供许可证密钥,代码将失败。例如,以下代码将在设计时正常运行,但在未安装Visual Basic的计算机上运行时将失败

这里似乎与您的案例有关:

  • 相同的错误号和消息
  • 同时发生:部署到非开发机器时
解决方法似乎是将控件放置在窗体上



也请查看本文:

Excel2007VB脚本运行时错误429执行时:

Set objFSO = CreateObject("Scripting.FileSystemObject").
解决方案:

  • 检查它指向的“我的文档”位置
  • 选中Excel选项“保存位置”
  • 运行“regsvr32 scrun.dll”
  • 参考资料:


    • 执行时Excel 2007 VB脚本运行时错误429:

      Set objFSO = CreateObject("Scripting.FileSystemObject").
      
      解决方案:

    • 检查它指向的“我的文档”位置
    • 选中Excel选项“保存位置”
    • 运行“regsvr32 scrun.dll”
    • 参考资料:


      我假设您的“PrintLibrary.dll”是使用.NET构建的?它有任何COM可见的类或接口吗?如果没有,则无需注册。如果是这样,我假设您正在使用RegAsm注册它,或者您(错误地)正在尝试使用RegSvr32?当您运行代码并得到“运行时错误'429'activex组件无法创建对象”时,它是哪一行代码?(也就是说,它试图创建什么对象——你确定它是来自“PrintLibrary.dll”的吗?)嗨,迈克,谢谢你回到我这里。我创建了对VisualStudio创建的.net tlb库的引用。这行好像断了…printLibraryTest.ConvertExcelToPdf。即使VisualStudio创建了tlb库,我仍然需要使用Regasm吗?我还使用ClassInterface(ClassInterfaceType.None),因此没有为该类生成类接口。我假设您的“PrintLibrary.dll”是使用.NET构建的?它是否有任何COM可见的类或接口?如果没有,则无需注册。如果是,我假设您正在使用RegAsm注册它,或者您(错误地)注册了它试图使用RegSvr32?当您运行代码并获得“运行时错误'429'activex组件无法创建对象”时,它是哪一行代码?(即,它试图创建什么对象--您确定它是来自“PrintLibrary.dll”的吗?)嗨,迈克,谢谢你回到我这里。我创建了一个对visual studio创建的.net tlb库的引用。这行似乎中断了…printLibraryTest.ConvertExcelToPdf。即使visual studio创建了tlb库,我仍然需要使用Regasm吗?我也在使用ClassInterface(ClassInterfaceType.None,因此不会为该类生成类接口。
      Set objFSO = CreateObject("Scripting.FileSystemObject").