У меня есть надстройка C ++ .xll для Excel. Следующая функция тестового листа отлично работает с загруженным xll:
LPXLOPER __stdcall Test()
{
return &xlstring("Yayage",true)
}
т.е. = Test () возвращает «Yayage» на листе. xlstring - это мой собственный пользовательский метод, который превращает строку в строку Excel и указывает, ответственны ли Excel или xll за освобождение своей памяти.
Я намерен использовать VBA для создания надстройки «GUI-компаньон» для версий 2003 и более ранних, а также проекта надстройки C # Excel 2007 для версии 2007 года. Они оба будут работать с независимой от версии .xll, которая взаимодействует с веб-сервисом.
И C #, и VBA имеют следующие функции Excel:
Application.ExecuteExcel4Macro (строка)
Application.Evaluate (строка)
Application.Run (...)
Они отлично работают (за исключением .Run, который в C # хочет получить 32 параметра) с обычными функциями рабочего листа, которые возвращают строки, например, в VBA:
MsgBox Application.<Any above method>("=Trim("" Billy Bob Fred "")")
Создает окно сообщения, содержащее «Билли Боб Фред»
Однако я не могу заставить это работать с любой из моих пользовательских функций рабочего листа. Регистрация их в качестве команд вместо функций рабочего листа также не работает.
Я пробовал разные стили имени функции, с = / () и без него, и почти все остальное, что я могу придумать.
Может кто-нибудь помочь мне с этим?