Оказывается это возможно. Для этого используют DynamicWrapper
Подключать будем IBEScript.dll - не самая популярная библиотека, зато если подключил её - можно жениться.
[spoiler]
Пример кода с комментариями:
Set Wrap = CreateObject("DynamicWrapperX") ' Подключаем объект
Wrap.Register "IBEScript.dll","ExecScriptFile", "i=shhh" ' Регистрируем метод внешней библиотеки. Тут используется версия х86 по желанию можно использовать х64 (но она сырая). "i=shhh" - означает, что метод ExecScriptFile принимает в качестве входящих параметров строку и 3 события Handle
Set Handle_Error=GetRef("HandleError") ' Создаем подписку на события метода HandleError
FuncHandleError = Wrap.RegisterCallback(Handle_Error, "i=sp") ' Регистрируем колбэк метода "i=sp" - будет возвращена строка и еще что-то
Set Before_Exec=GetRef("BeforeExec")' Создаем подписку на события метода BeforeExec
FuncBeforeExec = Wrap.RegisterCallback(Before_Exec, "i=sp")
Set After_Exec=GetRef("AfterExec")' Создаем подписку на события метода AfterExec
FuncAfterExec = Wrap.RegisterCallback(After_Exec, "i=sp")
Test=Wrap.ExecScriptFile("D:суперскрипт.sql",FuncHandleError,FuncBeforeExec,FuncAfterExec) ' Непосредственно вызов метода. Метод должен выполнить скрипт "суперскрипт.sql" из файла.
function HandleError(hwnd, lparam) ' Вывод сообщения об ошибке, событие.
msgbox "Err "&hwnd&vbcrlf&lparam
end function
function BeforeExec(hwnd, lparam) ' Событие перед выполнением. В сообщении будет текст строки подключения из скрипта.
msgbox "BE "&hwnd&vbcrlf&lparam
end function
function AfterExec(hwnd, lparam) ' Событие после выполнением. В сообщении будет текст скрипта.
msgbox "AE "&hwnd&vbcrlf&lparam
end function