Автоматически экспортировать рабочий лист из SAP GUI

Я использую vbscript для запуска SAP GUI через Excel VBA, мои действия следующие:

  • Авторизоваться
  • выберите Т-код
  • дать данные и выполнить
  • экспортировать в виде рабочих листов. Мой вопрос заключается в том, что последнее действие (экспорт в виде рабочих листов) покажет диалоговое окно файла, в котором мне нужно выбрать путь и нажать. Но я хочу автоматически экспортировать по заданному пути и имени файла без диалогового окна «Сохранить как».

Есть ли способ сделать это?

Вот мой код VBA:

Dim SAPconn As Object
Dim SAPsession As Object
Dim SapGuiAuto As Object
Dim WshShell As Object

Shell "C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")

Do Until WshShell.AppActivate("SAP Logon ")
    Application.Wait Now + TimeValue("0:00:01")
Loop

Set WshShell = Nothing

Set SapGuiAuto = GetObject("SAPGUI")
Set SAPapp = SapGuiAuto.GetScriptingEngine

Set SAPconn = SAPapp.Openconnection("ConnectionsName", True)
Set SAPsession = SAPconn.Children(0)


'LOGON
SAPsession.findById("wnd[0]").maximize
SAPsession.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100"
SAPsession.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "userid"
SAPsession.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "password"
SAPsession.findById("wnd[0]").sendVKey 0
SAPsession.findById("wnd[0]/tbar[0]/okcd").Text = "tcode"
SAPsession.findById("wnd[0]").sendVKey 0
'run the script(skip)
SAPsession.findById("wnd[0]/usr/ctxtWERKS-LOW").Text = Cells(1, 2)......
'execute
SAPsession.findById("wnd[0]/tbar[1]/btn[8]").press
'show list
SAPsession.findById("wnd[0]/tbar[1]/btn[48]").press
'export
SAPsession.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[1]").Select 
'↑ just select export>as worksheet and open the file dailog....

person pgrkie    schedule 02.06.2020    source источник
comment
? stackoverflow.com/questions/45465172 / или stackoverflow.com/questions/19452461/   -  person Tim Williams    schedule 02.06.2020
comment
Если ваш параметр SAP GUI отображает собственный диалог Windows, он отключен; вместо этого отображается диалоговое окно SAP, поэтому вы можете добавить некоторый код для ввода пути к файлу, как и для любого другого экрана SAP.   -  person Sandra Rossi    schedule 02.06.2020
comment
Сандра, у меня SAP 720, у меня нет возможности отображать собственный диалог Windows.   -  person pgrkie    schedule 03.06.2020


Ответы (1)


Это код, который я использую для сохранения из SAP — точный путь к элементам

(например, "wnd[1]/usr/ctxtDY_PATH") будет отличаться от вашего случая, так как это зависит от того, с какими таблицами вы работаете:

SAPsession.findById("wnd[1]/tbar[0]/btn[0]").press
SAPsession.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Downloads\"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "Downloaded_file_name"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 13
SAPsession.findById("wnd[1]/tbar[0]/btn[11]").press

Это делает следующее:

  • Нажимает кнопку сохранения
  • указывает желаемый путь к файлу, где файл должен быть сохранен
  • указывает желаемое имя файла
  • устанавливает курсор и нажимает сохранить

Насколько мне известно, полностью обойти диалоговое окно сохранения невозможно.

person Nick    schedule 02.06.2020
comment
Привет, Ник, спасибо за ваш ответ. Я использую этот синтаксис, но Excel ждет OLE. Похоже, я не мог управлять диалоговым окном файла ... Вы что-то настроили в SAP или Excel? - person pgrkie; 02.06.2020
comment
У меня аналогичная с вашей комплектация. Я использую VBA для запуска сценария SAP. Вам нужно закомментировать или удалить последнюю строку в вашем коде, которая заканчивается на .Select. Я думаю, что вы пытаетесь выбрать опцию Export to excel в меню файлов? Затем добавьте строки из моего ответа, изменив имена таблиц по мере необходимости. - person Nick; 02.06.2020
comment
Спасибо! Я попробую. И есть еще один вопрос, который я только что нашел. Когда я экспортирую лист Excel, файл открывается автоматически. Можно ли закрыть функцию? Просто сохраните и не открывайте. - person pgrkie; 03.06.2020
comment
При использовании этого метода файл будет просто сохранен, а не открыт. дайте мне знать, если это не так. - person Nick; 03.06.2020
comment
Привет, Ник, это сработало! Как вы сказали, файл не открылся. Большое спасибо за вашу помощь! А вы знаете как закрыть окно входа в сап скриптом? (Я могу закрыть графический интерфейс) - person pgrkie; 04.06.2020
comment
Рад, что смог помочь :). Что касается окна входа в систему sap, отвечает ли это на ваш вопрос: stackoverflow.com/a/56750286/2570277 - person Nick; 04.06.2020
comment
В моей версии нет опции, но вопрос был решен. ТКС! - person pgrkie; 11.06.2020