Индекс вне диапазона при попытке активировать уже открытую книгу - PullRequest
0 голосов
/ 23 ноября 2018

Ниже приведен код, который заключается в том, чтобы получить электронную таблицу из SAP, а затем поработать с ней.Проблема в том, что когда я скачал файл Excel из SAP, он будет открыт автоматически, и когда я назначу рабочую книгу активной книгой, она выдаст ошибку: «Подстрочный индекс вне диапазона».Я на 100% уверен, что путь правильный, потому что, если я использую Workbook.Open, он работает.Большое спасибо за вашу помощь.

Sub GetMRO()

Today_Date = GetTodayDate()
Start_Date = StartDate()
WeekNum = WeekDate()

'Startup SAP

If Not IsObject(sApplication) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set sApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
    Set Connection = sApplication.Children(0)
End If
If Not IsObject(session) Then
    Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
    WScript.ConnectObject session, "on"
    WScript.ConnectObject sApplication, "on"
End If

'Access to FBL3N to get data

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "FBL3N"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/usr/txtV-LOW").text = "MRO"
session.findById("wnd[1]/usr/txtENAME-LOW").text = ""
session.findById("wnd[1]/usr/txtV-LOW").caretPosition = 3
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[0]/usr/ctxtSO_BUDAT-LOW").text = Start_Date
session.findById("wnd[0]/usr/ctxtSO_BUDAT-HIGH").text = Today_Date
session.findById("wnd[0]/usr/ctxtSO_BUDAT-HIGH").setFocus
session.findById("wnd[0]/usr/ctxtSO_BUDAT-HIGH").caretPosition = 10
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/lbl[27,12]").setFocus
session.findById("wnd[0]/usr/lbl[27,12]").caretPosition = 0
session.findById("wnd[0]").sendVKey 16
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Users\Tung Hoang\Documents\Tung\Equipment\Planning\" & "Week " & WeekNum
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "MRO week " & WeekNum & ".XLSX"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 10
session.findById("wnd[1]/tbar[0]/btn[0]").press


Dim wbMRO As Workbook

Set wbMRO = Workbooks("C:\Users\Tung Hoang\Documents\Tung\Equipment\Planning\" & "Week " & WeekNum & "\" & "MRO week " & WeekNum & ".XLSX")
wbMRO.Activate
End Sub

1 Ответ

0 голосов
/ 23 ноября 2018

Попробуйте: если VB закодирован в текущей книге


Dim wbMRO As Excel.Workbook
Set wbMRO = ThisWorkbook
wbMRO.Activate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...