.net - 调用 DLL 时 Excel VBA 错误 "An attempt was made to load a program with an incorrect format"

标签 .net vba excel 32bit-64bit

我有一个在 auto_open VBA 宏中调用 .net DLL(称为“MyDLL”)的 Excel 文件。
当它到达下面的第 2 行时,会出现以下错误:

--VBA代码--

If objSensitivity Is Nothing Then

Set objSensitivity = CreateObject("MyDLL.Calculations") '<<Crashes here

--错误--

发生错误:-2147024885
自动化错误
试图加载格式不正确的程序。

我的系统是:
  • 一台 Windows 7 64 位电脑。
  • 它安装了 Excel 2003、2007 和 2010 (x86)
  • 它为 x86 和 x64 安装了 .Net Framework 1.1、2.0、3.0、3.5 和 4.0
  • 它具有所有最新的 Windows 更新。

  • 其他注意事项:
  • 我知道 DLL 是在 VB 的 VS2005 中创建的, objective-c PU 设置为“AnyCPU”
  • 如果我更改“X86”的 objective-c PU 设置没有区别 - 错误仍然存​​在。
  • 由于硬盘驱动器故障,我最近不得不重建我的电脑,在此之前它运行良好。所以我不知道发生了什么让它现在不起作用。
  • 这个问题出现在我打开文件的所有版本的 Excel 中。

  • 因为我知道它在我重建之前运行良好,并且我知道它适用于在 Windows 7 64 位上运行它的其他用户,所以我只能假设它是特定于我的 PC 的其他东西,而不是实际的 DLL。

    任何人都可以帮忙吗?

    最佳答案

    我整理了这个。

    我对所有版本的 Office 进行了修复安装,因为我怀疑它是一个有问题的 Microsoft Interop DLL,或者由于某种未知原因,它使用的是 64 位版本的 Interop。

    很奇怪,但它现在正在运行。

    关于.net - 调用 DLL 时 Excel VBA 错误 "An attempt was made to load a program with an incorrect format",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824711/

    相关文章:

    c# - .net 反汇编器/反编译器

    java - 为什么我的 Java RSA 加密会出现算术异常?

    .net - OpenTK 的 Vector2.Length 是 Vector2.LengthFast 的两倍

    excel - 尝试重命名工作表时星号不起作用

    excel - 使用 CSS 选择器按下一个元素提取跨度文本

    java - 从Excel文件中读取数据

    .net - 从 PHP 页面调用 .net 函数

    VBA SaveCopyAs 带有变量的文件路径

    arrays - 匹配并反射(reflect)最新时间

    arrays - VBA 数组函数 - 从没有空格的范围返回数组