我有下面的代码,该代码用于从SAP获取电子表格,然后对其进行处理。问题是,当我从SAP下载excel文件时,它将自动打开,并且当我将工作簿设置为活动工作簿以执行我的工作时,它显示错误:“下标超出范围”。我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
答案 0 :(得分:0)
尝试:如果VB已在当前工作簿中编码
Dim wbMRO As Excel.Workbook
Set wbMRO = ThisWorkbook
wbMRO.Activate