ExecuteExcel4Macro для пользовательских функций XLL - PullRequest
0 голосов
/ 04 июня 2010

У меня есть надстройка 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    "")")

Создает окно сообщения, содержащее «Билли Боб Фред»

Однако я не могу заставить это работать с любой из моих пользовательских функций рабочего листа. Регистрация их в качестве команд вместо функций рабочего листа также не работает.

Я пробовал разные стили имени функции, с = / () и без него, и почти все остальное, что я могу придумать.

Может кто-нибудь помочь мне с этим?

1 Ответ

1 голос
/ 08 апреля 2011

Ваша xlstring возвращает адрес временного объекта?

...