Как использовать статические подпрограммы void, созданные с помощью .NET в VBA? - PullRequest
0 голосов
/ 17 декабря 2011

Я пытаюсь отправить сообщение через сокеты из VBA.Для этого я создал статические классы .NET (для использования в других приложениях .NET).

Как их использовать в VBA?

Я нашел синтаксис VBA для использования функций shell32.dllэто выглядит так, но я не могу этого сделать, потому что когда я собираю свою библиотеку, предназначенную для использования COM, у меня не может быть статических подпрограмм (и исследования говорят, что COM не любит статические поля).Как это сделал Shell32?

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Я понял, как это сделать, создав VBA экземпляр класса и вызвав из него подпрограмму, но я могу реализовать это, только добавив ссылку на мой .DLL в разделе «Ссылки» VBA (что означаетконечный пользователь должен установить его в статическом месте).

TL; DR;Как использовать статические процедуры, сделанные в C # .NET в VBA, если библиотека находится в том же каталоге, что и файл Excel?(.xlsm или .xlsb)

1 Ответ

1 голос
/ 17 декабря 2011

Вы не можете передавать объекты класса между VBA и DLL, только COM-объекты.Вам нужно будет обернуть свой класс в COM-объект, используя методы и свойства COM, а не методы и свойства класса.

Вы также можете вызывать методы DLL, как показано в примере - это просто функции, а не классфункции.Вам нужно было бы (в C #) создать функцию, которая затем создала класс и вызвала функцию.

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