Xin cảm ơn. Bạn có thể giải thích hoặc dịch sang tiếng Việt đoạn mã trên để anh em có thể hiểu mà áp dụng (nếu bị).
Đây là toàn bộ mã của mình
Function UpdatePO_1()
Dim SapGuiAuto, WScript, msgcol
Dim objGui As GuiApplication
Dim objConn As GuiConnection
Dim session As GuiSession
Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
Set objConn = objGui.Children(0)
Set session = objConn.Children(0)
Dim fileName2 As String
fileName2 = "UpdatePO.XLSX"
Dim G6 As String
G6 = "D:\HIEU MOI 2023\KHO 2023\DU_LIEU_KET_XUAT"
Đếm số lượng sổ làm việc excel đã mở và đặt nó thành biến trước khi chạy mã SAP
Dim appWorkbookCount As Long
appWorkbookCount = Application.Workbooks.Count
Application.DisplayAlerts = False
Application.ScreenUpdating = False
session.findById("wnd[0]/tbar[0]/btn[3]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "ME2N"
session.findById("wnd[0]/tbar[0]/btn[0]").press
Dim i As Long
Dim dc_HangNgayA As Long
dc_HangNgayA = Workbooks("KHO_NVL_2024").Sheets("Hang Ngay").Cells(Rows.Count, 1).End(xlUp).Row
i = dc_HangNgayA
'Thay doi so PO
session.findById("wnd[0]/usr/ctxtEN_EBELN-LOW").Text = Workbooks("KHO_NVL_2024").Sheets("Hang Ngay").Range("B" & i).Value
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]").sendVKey 4
'VI TRI THAY DOI DIA CHI DUONG DAN LUU FILE
session.findById("wnd[2]/usr/ctxtDY_PATH").Text = G6
session.findById("wnd[2]/usr/ctxtDY_FILENAME").Text = "UpdatePO.XLSX"
session.findById("wnd[2]/tbar[0]/btn[11]").press
session.findById("wnd[1]/tbar[0]/btn[11]").press
'Back quay lai
session.findById("wnd[0]/tbar[0]/btn[3]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Đoạn này thì dùng vòng lặp Do Loop While với DoEvents để làm cho tệp xuất từ SAP xuất hiện
Do
DoEvents
Loop While appWorkbookCount = Application.Workbooks.Count
Nhờ vòng lặp trên cho nên dễ dàng đặt tệp vừa xuất từ SAP này thành biến
Dim wb As Workbook, wbExport As Workbook
For Each wb In Application.Workbooks
If InStr(1, wb.Name, "UpdatePO") > 0 Then
Set wbExport = wb
End If
Next wb
UpdatePO_1 = "D:\HIEU MOI 2023\KHO 2023\DU_LIEU_KET_XUAT\" & fileName2
End Function