c – 如何为excel创建xll?
作者:互联网
我正在尝试创建一个简单的xll文件,但我不能
我已经按照msdn网站上的教程进行了操作
http://support.microsoft.com/kb/178474
但本教程适用于Microsoft Excel 97 Developer’s Kit,我只有2007版本
视觉工作室2005,所以这可能是导致错误的原因:
1>------ Build started: Project: Anewxll, Configuration: Debug Win32 ------
1>Compiling...
1>Anewxll.cpp
1>c:\nam\test\anewxll\anewxll\anewxll.cpp(97) : error C2665: 'AfxMessageBox' : none of the 2 overloads could convert all the argument types
1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(5031): could be 'int AfxMessageBox(LPCTSTR,UINT,UINT)'
1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(5033): or 'int AfxMessageBox(UINT,UINT,UINT)'
1> while trying to match the argument list '(const char [21], long)'
1>c:\nam\test\anewxll\anewxll\anewxll.cpp(140) : error C2665: 'AfxMessageBox' : none of the 2 overloads could convert all the argument types
1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(5031): could be 'int AfxMessageBox(LPCTSTR,UINT,UINT)'
1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(5033): or 'int AfxMessageBox(UINT,UINT,UINT)'
1> while trying to match the argument list '(char [8192], long)'
1>c:\nam\test\anewxll\anewxll\anewxll.cpp(174) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [14]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
解决方法:
您拥有的错误消息与Excel或Excel SDK无关.前两个错误是由于您使用AfxMessageBox(一个MFC API)而第三个是因为参数与Win32消息框API不匹配.导致这些错误的原因是您的项目是一个Unicode应用程序(导致TCHAR评估为wchar_t和宏,如MessageBox,以评估MessageBoxW而不是MessageBoxA).最简单的解决方法是将您的应用程序从Unicode更改为MBCS.
但是 – 如果我可以提出建议 – 请考虑使用Add-in express或ExcelDNA来创建UDF / RTD.我猜你对Win32 C编程不太满意.如果是这种情况,您将在使用普通C和Excel SDK创建UDF / RTD / Addins时遇到很多麻烦.
相反,如果你选择加载快递或excel dna – 它们会解决将xlopers转换为直观.net类型和其他各种管道的所有麻烦,让您可以专注于业务逻辑.
免责声明:我与加载快递或excel dna无关.我刚好碰巧使用过它们.