Инициирование файла .bat (подключение к Oracle через SQLcl) из макроса MS Excel VBA - PullRequest
0 голосов
/ 13 марта 2020

Я пишу макрос, который должен:

  1. Запустить файл .bat
  2. Дождаться завершения файла .bat (данные загружаются из Oracle в .csv через SQLcl)
  3. Продолжить выполнение оставшейся части VBA

Я нашел два решения этой проблемы:

Первое - через оболочку:

Dim shell_command As String
shell_command = ".bat_file_location"
Call Shell(shell_command, vbNormalFocus)

, который открывает файл .bat, но окно немедленно закрывается и ничего не выполняется.

Второй - через Windows Объект сценария хоста:

Dim strCommand As String
Dim lngErrorCode As Long
Dim wsh As WshShell
Set wsh = New WshShell

strCommand = Chr(34) & _
             ".bat_file_location" & _
             Chr(34)
lngErrorCode = wsh.Run(strCommand, _
                       WindowStyle:=0, _
                       waitonreturn:=True)
If lngErrorCode <> 0 Then
    MsgBox "Uh oh! Something went wrong with .bat file!"
    Exit Sub
End If
Set wsh = Nothing

эта опция не работает ( lngErrorCode = 0) и я не совсем понимаю, почему. Я использую тот же метод для других файлов .bat, которые загружают данные через BTEQ из базы данных Teradata, поэтому я предполагаю, что база данных SQLcl / Oracle не хочет работать с этим методом.

Есть ли у вас какие-нибудь идеи, как преодолеть это?

.bat код файла:

sql user/password@//hostname:port/servicename @"path\code.sql"

Любые советы будут высоко ценится. Привет.

...