我用VC++ 2010写了一个非常简单的xll文件,我使用的Excel是Excel 2007。该库只包含一个函数:
extern "C" LPXLOPER12 WINAPI tsMkErr() {
static XLOPER12 x;
x.xltype = xltypeErr;
x.val.err = xlerrNull;
return &x;
}
以及必要的xlAutoOpen功能。我编译了dll文件,将名称更改为xll,然后双击在Excel中打开。一切都按照我的预期进行。
但是,如果我尝试在另一台电脑上打开此文件,Excel 只是不断告诉我:
您尝试打开的文件“.xll”的格式与文件扩展名指定的格式不同。 打开文件之前,请验证文件是否未损坏且来源可靠。 您想现在打开文件吗?
当我单击“是”时,会弹出垃圾。
我还尝试通过加载项管理器加载它。在这种情况下,我可以打开文件,但找不到我的函数 tsMkErr()。
我将不胜感激所有建议......
btw,我真的不知道如何选择回复作为答案。如果你知道怎么做,也请告诉我:)
...我将在本周发布我的工具...现在我刚刚意识到它只能在我的电脑上使用...请帮助...T_T
主要原因是:
您尝试打开具有错误架构的 xll(例如:32 位 xll 和 excel 64 位)
缺少一些外部 dll。(请参阅 Dependency Walker 工具) 请注意,如果您在调试模式下构建并尝试通过 Visual Studio 打开它,在这种情况下,您的环境路径变量可能不可用,并且 xll 缺少一些 dll。
帮自己一个忙,使用 http://xll.codeplex.com。
可能的原因可能是缺少依赖项(crt dll 等)。您可以使用 Dependency Walker 工具进行检查。
您似乎正在以“调试”模式构建解决方案。如果您在调试模式下构建解决方案,Visual Studio 会将 xll 与很少安装在另一台计算机上的调试库链接起来。因此,请确保将构建配置设置为 release 并且它应该可以在其他计算机上运行(如果它们安装了正常的 ms c++ 可再发行库)。