Страница: 1 |
Страница: 1 |
Вопрос: Использование DLL на VBA и VB
Добавлено: 10.09.15 18:21
Автор вопроса: angrynews | Web-сайт:
Привет, гуры VB!
У меня есть DLL, которая поставляется с софтом, который я линкую с VBA. Назовем этот софт - "МЕГАПРОГА". Все слинковано и нормально работает.
Теперь я хочу в VB написать свою DLL с частью кода VBA - грубо говоря, я хочу часть кода спрятать. В VBA этот код, который я хочу спрятать, сидит в отдельном bas-модуле. В этом коде используется DLL МЕГАПРОГИ.
Вопрос 1 - можно ли так сделать - в своей собственной DLL использовать стороннюю DLL, чтобы потом свою DLL подключить к VBA? И если да, то стороннюю DLL надо будет отдельно подключать к VBA или как?
Вопрос 2 - как, собственно, использовать вообще стороннюю DLL в VB? Пишу в VisualStudio 2015, ссылку добавил на DLL, увидел ее в окне Представления классов. Далее пробую добавить переменную этого класса и через нее использовать свойства, т.е. так, как делал в VBA, но что-то идет не так ))
Вот рабочий код VBA
Dim localFluid As NET32COMLib.FluidModel
netObject.OpenModel ("Строка как аргумент")
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #1
Добавлено: 10.09.15 18:23
Такая же конструкция в VB подчеркивает переменную NetObject и не видит свойство OpenModel
Номер ответа: 2
Автор ответа:
Dark
Вопросов: 4
Ответов: 41
Профиль | | #2
Добавлено: 03.12.15 04:37
У тебя библиотека предоставляет COM-объект, для работы с ним тебе нужно подключить пространство имен System.Runtime.InteropServices. Вызовы будут несколько сложнее чем из VBA
https://msdn.microsoft.com/en-us/library/aa645736%28v=vs.71%29.aspx
Чтобы .NET библиотеку можно было использовать в VBA как COM-объект нужно отметить галочку "Make assembly COM-Visible" и зарегистрировать ее в реестре.
http://www.geeksengine.com/article/create-dll.html
Зарегистрировать библиотеку на другом компьютере можно через утилиту regasm.exe.
http://www.geeksengine.com/article/register-dll.html
Вообще переносить код из VBA в NET для его сокрытия-хреновая идея. .NET сборки прекрасно декомплируются обратно в исходный код, вплоть до возможности обратно скомпилировать.
Прекрасный беплатный декомплиятор dotPeek https://www.jetbrains.com/decompiler/download/