Как передать массив строк из C / C ++ DLL в VBA (Excel) - PullRequest
3 голосов
/ 12 июня 2009

как передать массив строк из C / C ++ dll в vba (Excel)

DLL в Visual Studio

dll не управляется, ATL и т. Д.

С уважением Andy

Ответы [ 2 ]

3 голосов
/ 16 июня 2009

Microsoft много лет назад написала технический документ, в котором подробно описываются некоторые лучшие практики написания библиотек DLL для использования с VB5 / VB6, что, конечно, также применимо к VBA. Он перепечатан с разрешения и доступен в оригинальной форме Word, здесь:

Microsoft: разработка DLL для VB5 http://vb.mvps.org/tips/vb5dll.asp

См. Раздел 8 («Передача и возвращение массивов») для помощи в выполнении этой задачи. Есть пример, который написан специально для демонстрации передачи и возврата массивов строк.

2 голосов
/ 12 июня 2009

Один из способов справиться с этим - написать свою DLL-библиотеку, возвращающую SAFEARRAY типа Byte в качестве результата функции (массивы VB - OLE SafeArrays).

Для этого вам нужно ознакомиться с API и структурами SafeArray. Я сам об этом не знаю, но основные вещи, которые вам понадобятся, - это структура SAFEARRAYBOUND и API SafeArrayCreate. Что API возвращает вам, вы возвращаетесь в VBA. И все будет готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...