Nguyễn Tiền Hải
Nguyễn Tiền Hải
Thảo luận 3 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1539 lượt xem

Thầy ơi! Em copy dữ liệu từ SAP GUI ra file excel theo...

Thầy ơi! Em copy dữ liệu từ SAP GUI ra file excel theo code sau nhưng nó lại bị lỗi. Đối với dữ liệu ít thì copy được toàn bộ. Nhưng đối với dữ liệu lớn thì chỉ copy được 1 nửa
Application.ScreenUpdating = False

With Sheet1
Worksheets.Add
ActiveSheet.Name = Sheet1.Range("G" & i).Value
ActiveSheet.Select
Set TBL = session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell")
For x = 1 To TBL.RowCount
For y = 1 To TBL.columncount
ActiveSheet.Cells(x, y).Value = TBL.GetCellValue(x - 1, TBL.ColumnOrder(y - 1))
Next y
Next x
.Select
End With
Application.ScreenUpdating = True
Thảo luận 3 câu trả lời
Lượt xem 1539 lượt xem
Vỗ tay vỗ tay
Nguyễn Tiền Hải 09:10 - Oct 09, 2018
Em làm được rồi thầy ơi! Cám ơn thầy!
Sub test_code()
Dim session As Object
Set session = init()
Dim i As Integer
Dim EmpNo As String
Dim lastrow As Integer
Dim a As Integer
Dim b As String
Dim x As Integer
Dim y As Integer
Dim sh As Worksheet

lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row

'session.startTransaction "FB03"
'session.findById("wnd[0]/tbar[1]/btn[20]").press

'Stop
'Set tbl = session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell")
'Stop

'For i = 0 To 9
'Debug.Print tbl.GetCellValue(i, tbl.ColumnOrder(3))

'Next

session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000001993"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000001640"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000001665"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").selectedNode = "0000001744"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").topNode = "Favo"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").doubleClickNode "0000001744"
session.findById("wnd[0]/usr/txtP_GJAHR").Text = Sheet1.Range("B15").Value
session.findById("wnd[0]/usr/ctxtS_BUDAT-LOW").Text = Sheet1.Range("B16").Value
session.findById("wnd[0]/usr/ctxtS_BUDAT-HIGH").Text = Sheet1.Range("D16").Value
session.findById("wnd[0]/usr/ctxtS_BLART-LOW").Text = "KA"
session.findById("wnd[0]/usr/ctxtS_BLART-HIGH").Text = "KR"
On Error GoTo Loi
For i = 25 To lastrow Step 1
If Sheet1.Range("F" & i).Value Like "vn*" Then
session.findById("wnd[0]/usr/ctxtP_BUKRS").Text = "H304"
Else
session.findById("wnd[0]/usr/ctxtP_BUKRS").Text = "H310"
End If

EmpNo = Sheet1.Range("K" & i).Value
session.findById("wnd[0]/usr/txtS_XREF1-LOW").Text = EmpNo
session.findById("wnd[0]/usr/txtS_XREF1-HIGH").Text = EmpNo
session.findById("wnd[0]/usr/txtS_XREF1-HIGH").caretPosition = 8
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press

Set TBL = session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell")
a = TBL.RowCount
If a = 0 Then

Sheet1.Range("L" & i).Value = ""
Sheet1.Range("M" & i).Value = "Da Checked"
Sheet1.Range("N" & i).Formula = "=IF(M" & i & "="""","""",IF(AND(L" & i & "="""",M" & i & "=""Da Checked""),""Khong co TK SAP"",""Co TK SAP""))"
Sheet1.Range("L" & i).Select
session.findById("wnd[0]").sendVKey 3
Else


session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").setCurrentCell -1, "WRBTR"
session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").selectColumn "WRBTR"
session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").pressToolbarButton "&MB_SUM"
session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").doubleClickCurrentCell
session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").contextMenu

Application.ScreenUpdating = False

With Sheet1
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Sheet1.Range("G" & i).Value
Set sh = ActiveSheet
sh.Select
Set TBL = session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell")
For x = 0 To TBL.RowCount - 1 Step 1
session.findById("wnd[0]/shellcont/shell/shellcont[0]/shell").firstVisibleRow = x
For y = 0 To TBL.columncount - 1 Step 1
sh.Cells(x + 1, y + 1).Value = TBL.GetCellValue(x, TBL.ColumnOrder(y))
Next y
Next x
.Select
End With
Application.ScreenUpdating = True

a = TBL.RowCount
b = TBL.GetCellValue(a - 1, "WRBTR")

Sheet1.Range("L" & i).Value = b
Sheet1.Range("M" & i).Value = "Da Checked"
Sheet1.Range("N" & i).Formula = "=IF(M" & i & "="""","""",IF(AND(L" & i & "="""",M" & i & "=""Da Checked""),""Khong co TK SAP"",""Co TK SAP""))"
session.findById("wnd[0]").sendVKey 3
Sheet1.Range("L" & i).Select
End If



Next i

MsgBox "Da Kiem Tra Tu Dong Xong! Hay Check Lai Truoc Khi Nop Bao Cao!"
Exit Sub
Loi:
MsgBox "Co Loi Xay Ra!"

End Sub
Vỗ tay vỗ tay
Nguyễn Tiền Hải 09:10 - Oct 09, 2018
Có điều nhìn code của em thấy gớm quá
Vỗ tay vỗ tay
Người dùng ẩn danh 00:10 - Oct 10, 2018
không sao đâu em, code sap gui scripting thường do đặc trưng của sap với các reference trên UI nên trông hơi bị rối chút, nhưng quan trọng nó tự động hóa được công việc mình cần làm
Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông