【问题标题】:C++ DLL called from VBA in Excel 2010 only works in administrator modeExcel 2010 中从 VBA 调用的 C++ DLL 仅在管理员模式下工作
【发布时间】:2013-05-31 19:50:20
【问题描述】:

我在 Visual Studio 2012 中创建了一个执行计算的简单 dll。我使用以下语法从 Excel 2010 中的 VBA 调用此 dll:

Declare Sub MyFunction Lib "MyDll.dll" (ByRef param1 As Double, ByVal param2 As Double)

这个功能在我的开发机器上完美运行。当我尝试在另一台计算机上运行此 dll 时,我收到以下错误:

Run-time error '53': File not found: MyDll.dll

但是,当我以管理员(提升)模式运行 Excel(在另一台计算机上)时,我没有收到此错误,并且一切正常。

有没有什么方法可以在不让用户以管理员身份运行 Excel 的情况下使其工作?

【问题讨论】:

  • 在非管理员模式下工作目录可能不同?确保 dll 在工作目录中
  • @GamErix 感谢您的 cmets。我得到了一些非常奇怪的行为。我尝试了很多东西,包括将 dll 放在 System32 目录中……但这就是现在发生的事情。如果我指定 dll 的 ABSOLUTE 路径,只要它是 NOT System32 目录,我就可以在正常模式下运行 dll(即不是管理员)。出于某种原因,如果我给它提供 System32 目录中 dll 的 ABSOLUTE 路径,我会收到文件未找到错误。我不得不承认这真的很奇怪。
  • true,这只是确认当您加载 dll 时,应用程序没有在您的 DLL 所在的目录中查找,或者换一种说法:您指定的 DLL 不在当前工作目录中或 DLL 库目录或 PATH 变量目录,所以 exel 找不到它。
  • @GamErix 请把你的 cmets 放在一个答案中,这样我就可以给你回答这个问题的功劳。再次感谢您的帮助!

标签: c++ dll visual-studio-2012 excel-2010


【解决方案1】:

据我推测,您的 DLL 不在工作目录、PATH 变量目录或系统目录中。 Excel 没有在您的 DLL 所在的目录中查找,因此您需要将您的 DLL 移动到系统目录、PATH 变量目录之一或 Excel 的工作目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多