Tình nghĩa giang hồ
Thanh sơn bất cải, lục thủy trường lưu
- Tham gia
- 29/9/20
- Bài viết
- 330
- Được thích
- 429
Chào anh chị em có vấn đề này nhờ anh chị hỗ trợ giúp.
Em có 1 đoạn code chạy vòng lặp khá tốt, nhưng bị nhược điểm: mỗi lần chạy 1 dòng.
Giả sử 1 dòng chạy bằng 1s thì 1000 dòng nó chạy 1000s
Giờ em mong muốn, tăng tốc vòng lặp lên bằng step
Code chạy từng dòng
Sub VK11_new()
'Ket noi SAP
If Not IsObject(Sap_app) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set Sap_app = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = Sap_app.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
'chay VBA
Dim dong_cuoi As Long
Dim i As Long
dong_cuoi = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
session.findById("wnd[0]").maximize
For i = 2 To dong_cuoi
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nvk11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").Text = "YGKH"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Rows(i).Cells(1)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/txtKONP-KBETR[4,0]").Text = Sheet1.Rows(i).Cells(2)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKONP-KONWA[5,0]").Text = "VND"
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKONP-KMEIN[7,0]").Text = Sheet1.Rows(i).Cells(3)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATAB[10,0]").Text = Sheet1.Rows(i).Cells(4)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").Text = Sheet1.Rows(i).Cells(5)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").SetFocus
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
''nhan SAVE trong SAP
'session.findById("wnd[0]/tbar[0]/btn[11]").press
Sheet1.Rows(i).Cells(6) = "XONG"
Next
End Sub
Code chạy step 10
Dim dong_cuoi As Integer
Dim i As Long
dong_cuoi = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
session.findById("wnd[0]").maximize
For i = 2 To ((dong_cuoi \ 10) + 1) Step 10
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nvk11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").Text = "YGKH"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Range("A" & i & ":A" & i + 9)
Em đã thử thay câu lệnh trên các kiểu vẫn lỗi
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,& i &]").Text = Sheet1.Range("A" & i & ":A" & i + 9)
Câu lệnh chạy 1 dòng chính xác
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Rows(i).Cells(1)
Vậy trường hợp câu lệnh chạy 10 dòng ở chỗ này thì viết như thế nào vậy anh chị
?????
Nhờ anh chị hỗ trợ giúp em trường hợp này.
Em cảm ơn anh chị.
Em có 1 đoạn code chạy vòng lặp khá tốt, nhưng bị nhược điểm: mỗi lần chạy 1 dòng.
Giả sử 1 dòng chạy bằng 1s thì 1000 dòng nó chạy 1000s
Giờ em mong muốn, tăng tốc vòng lặp lên bằng step
Code chạy từng dòng
Sub VK11_new()
'Ket noi SAP
If Not IsObject(Sap_app) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set Sap_app = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = Sap_app.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
'chay VBA
Dim dong_cuoi As Long
Dim i As Long
dong_cuoi = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
session.findById("wnd[0]").maximize
For i = 2 To dong_cuoi
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nvk11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").Text = "YGKH"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Rows(i).Cells(1)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/txtKONP-KBETR[4,0]").Text = Sheet1.Rows(i).Cells(2)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKONP-KONWA[5,0]").Text = "VND"
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKONP-KMEIN[7,0]").Text = Sheet1.Rows(i).Cells(3)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATAB[10,0]").Text = Sheet1.Rows(i).Cells(4)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").Text = Sheet1.Rows(i).Cells(5)
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").SetFocus
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtRV13A-DATBI[11,0]").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
''nhan SAVE trong SAP
'session.findById("wnd[0]/tbar[0]/btn[11]").press
Sheet1.Rows(i).Cells(6) = "XONG"
Next
End Sub
Code chạy step 10
Dim dong_cuoi As Integer
Dim i As Long
dong_cuoi = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
session.findById("wnd[0]").maximize
For i = 2 To ((dong_cuoi \ 10) + 1) Step 10
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nvk11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").Text = "YGKH"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Range("A" & i & ":A" & i + 9)
Em đã thử thay câu lệnh trên các kiểu vẫn lỗi
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,& i &]").Text = Sheet1.Range("A" & i & ":A" & i + 9)
Câu lệnh chạy 1 dòng chính xác
session.findById("wnd[0]/usr/tblSAPMV13ATCTRL_FAST_ENTRY/ctxtKOMG-MATNR[0,0]").Text = Sheet1.Rows(i).Cells(1)
Vậy trường hợp câu lệnh chạy 10 dòng ở chỗ này thì viết như thế nào vậy anh chị
?????
Nhờ anh chị hỗ trợ giúp em trường hợp này.
Em cảm ơn anh chị.
File đính kèm
Lần chỉnh sửa cuối: