Как создать XLL для Excel? - PullRequest
       5

Как создать XLL для Excel?

3 голосов
/ 21 апреля 2011

Я пытаюсь создать простой файл xll, но не могу Я следовал за учебником на сайте MSDN http://support.microsoft.com/kb/178474 Но это руководство предназначено для Microsoft Excel 97 Developer Kit, у меня только версия 2007 Visual Studio 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

Ответы [ 2 ]

3 голосов
/ 05 февраля 2013

Сообщения об ошибках, которые у вас есть, не связаны с Excel или Excel SDK.Первые 2 ошибки связаны с использованием AfxMessageBox (MFC API), а третья - с несоответствием параметров API окна сообщений Win32.Эти ошибки вызваны тем, что ваш проект является приложением Unicode (в результате чего TCHAR оценивается в wchar_t, а макросы, такие как MessageBox, в MessageBoxW, а не в MessageBoxA).Простейшим решением будет изменить ваше приложение с Unicode на MBCS.

Однако - если я могу сделать предложение - рассмотрите возможность использования Add-in express или ExcelDNA для создания ваших UDF / RTD.Я предполагаю, что вам не очень комфортно в программировании на Win32 C ++.Если это так, вы столкнетесь с большими трудностями при создании UDF / RTD / Addins с простым C ++ и Excel SDK.

Если вместо этого вы воспользуетесь надстройкой Express или Excel днк - они позаботятся обо всехголовные боли от преобразования xlopers в интуитивно понятные типы .net и другие виды сантехники, позволяющие вам сосредоточиться на своей бизнес-логике.

Отказ от ответственности: я никоим образом не связан ни с надстройкой Express, ни с Excel DNAЯ только что использовал их время от времени.

2 голосов
/ 28 мая 2012

Если вы сможете установить MSVC ++ 2010 Express, то http://xll.codeplex.com избавит вас от многих проблем.

...