Я работаю с бухгалтерским пакетом, который поддерживает VBA. Когда система учета выполняет макрос VBA, она передает объект «Сеанс», который включает в себя информацию для входа в систему, которая может использоваться для доступа к другим частям пакета учета. Я могу создать приложение VB6 и ссылаться на библиотеку COM, где определен этот тип сеанса. Когда я запускаю приложение VB6, мне нужно инициализировать переменную Session, которая включает в себя вход в учетную систему, и в итоге я использую другую параллельную лицензию. Если я придерживаюсь VBA, у меня нет этого ограничения, но я застреваю с VBA.
Я пытаюсь выяснить, есть ли способ заставить макрос VBA, у которого уже инициализирован этот объект Session, отправить этот объект Session в программу VB. Я думаю, что я могу создать DLL, которая вызывает макрос VBA и передает объект Session. Тогда DLL может выполнить программу VB, сама. Эта программа VB (я надеюсь) может сделать обратный вызов DLL, чтобы получить доступ к переменной Session. Я думаю, что если программа VB была вызвана DLL, программа VB должна иметь доступ к общей памяти.
Таким образом, вопрос заключается в следующем: могу ли я, чтобы программа VBA вызывала DLL, передавала COM-объект в эту DLL, могла ли эта DLL вызывать VB-программу, и чтобы этот COM-объект был доступен для вызываемой VB-программы?