Hỗ trợ vòng lặp VBA- CS01

Liên hệ QC

Ngọc Minh Vân

Quy ẩn giang hồ.........vô danh, vô tánh..........
Tham gia
1/11/21
Bài viết
8
Được thích
14
Hỗ trợ VBA kết nối phần mềm

Xin chào anh em GPE, mình có 1 code record lại, có 1 ô vị trí là vị trí tĩnh, mình muốn thay vị trí đó thành vị trí động (vùng trong file excel của mình Cells() ). Mình có gửi hình, ko biết sao bị lỗi. Mình có gửi hình bên dưới. Anh em xem giúp mình với.

Bài này là kết nối VBA với SAP nhé các bác.

Mong các bác giúp đỡ. Nếu hình ảnh bị mờ thì các bác xem hình ảnh trong link dùm em nhé. Hình ảnh này nó rõ hơn.


https://drive.google.com/file/d/1tByZqCgxMo0p0SEhNbSG08ke3Lb8Q3wy/view?usp=sharing
Bài đã được tự động gộp:

Bài này em chỉ cần 3 cột A,B,C thôi nhé các bác: cột A là mã cha, cột B là mã con, cột C là định mức của mã con. Còn cột D mục đích em làm: là để bỏ vào vị trí [ ,0] tức là [.., cột D]. Nếu có cách làm khác thì bỏ cột D đi nhé các bác. Em cảm ơn.
 

File đính kèm

  • VBA-CS01.xlsb
    10.7 KB · Đọc: 7
  • 1.jpg
    1.jpg
    80.1 KB · Đọc: 22
  • 2.jpg
    2.jpg
    75.2 KB · Đọc: 22
  • 3.jpg
    3.jpg
    61.5 KB · Đọc: 20
  • 4.jpg
    4.jpg
    85.4 KB · Đọc: 23
Lần chỉnh sửa cuối:
PHP:
Dim iRow as long

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "CS01"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRC29N-MATNR").text = Sheet1.Range("A1").value2  '<--------------------'
session.findById("wnd[0]/usr/ctxtRC29N-WERKS").text = "1000"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").text = "1"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").setFocus
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").caretPosition = 1
session.findById("wnd[0]").sendVKey 0
' //'
For iRow =  1 to 13
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2," & Sheet1.Range("D" & iRow).value2 & "]").text =  Sheet1.Range("B" & iRow).value2
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4," & Sheet1.Range("D" & iRow).value2 & "]").text =  Sheet1.Range("C" & iRow).value2
Next iRow
' //'
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").caretPosition = 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2,13]").text = "510000011"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").text = "70"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
 
Lần chỉnh sửa cuối:
Upvote 0
À, em nói thêm cột C định mức: 5, 10, 15,20 là em làm ví dụ cho đẹp thôi nhé. Thực tế của nó là 1,2,3 hoặc 2.5 gì đó. Chứ không phải là tăng lên 5 đâu nhé các bác.
Bài đã được tự động gộp:

PHP:
Dim iRow as long

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "CS01"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRC29N-MATNR").text = Sheet1.Range("A1").value2  '<--------------------'
session.findById("wnd[0]/usr/ctxtRC29N-WERKS").text = "1000"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").text = "1"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").setFocus
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").caretPosition = 1
session.findById("wnd[0]").sendVKey 0
' //'
For iRow =  1 to 13
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2," & Sheet1.Range("D" & i).value2 & "]").text =  Sheet1.Range("B" & i).value2
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4," & Sheet1.Range("D" & i).value2 & "]").text =  Sheet1.Range("C" & i).value2
Next iRow
' //'
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").caretPosition = 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2,13]").text = "510000011"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").text = "70"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,13]").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
Chà em lang thang khắp diễn đàn trên mạng, người biết Excel nhiều. Còn SAP hầu như khá ít. Mà ở đây các bác rành cả SAP. Bái phục, bái phục...... Em đã tìm được nơi dừng chân rồi, không lang thang nữa. Cảm ơn bác

befaint

 
Upvote 0
Em chào bác befaint. Hồi sáng trong giờ làm việc em test không kỹ code.
Theo code bác viết cho em thì nó chạy 13 dòng thì rất ok, 18 dòng cũng rất ok. Nhưng qua dòng thứ 19 thì ko được. Vì màn hình nó cho có 18 dòng. Mình phải lăn chuột xuống mới làm tiếp được.
Code của bác:
Dim iRow As Long

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "CS01"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRC29N-MATNR").Text = Sheet1.Range("A1").Value2 '<--------------------'
session.findById("wnd[0]/usr/ctxtRC29N-WERKS").Text = "1000"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").Text = "1"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").SetFocus
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").caretPosition = 1
session.findById("wnd[0]").sendVKey 0
' //'
For iRow = 1 To 100
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/ctxtRC29P-IDNRK[2," & Sheet1.Range("D" & iRow).Value2 & "]").Text = Sheet1.Range("B" & iRow).Value2
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4," & Sheet1.Range("D" & iRow).Value2 & "]").Text = Sheet1.Range("C" & iRow).Value2
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").SetFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").caretPosition = 0
session.findById("wnd[0]").sendVKey 0
Next iRow

End Sub
Bài đã được tự động gộp:

Em có recode SAP lăn chuột.
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 1
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 2
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 3
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 4
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 5
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 6
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 7
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 8
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 9
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 10
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 11
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 12
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 13
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 14
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 15
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 16
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 17
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.position = 18


Vậy mình có cách nào kết hợp không bác befaint ? Mình chạy 1 dòng, rồi lăn chuột 1 dòng ko bác. Như vậy khi mình làm vài trăm dòng chẳng hạn. Sẽ không bị vướng chỗ 18 dòng.
Bài đã được tự động gộp:

Em đã bỏ thử 1 dòng lăn chuột vào vòng lặp. Nhưng không ổn lắm. Vẫn báo lỗi, nhờ bác hỗ trợ giúp. Cảm ơn bác

@befaint

 
Lần chỉnh sửa cuối:
Upvote 0
Thêm câu lệnh này vào không bác @befaint ?
If iRow Mod 18 = 0 (và dòng 18 khác rỗng) Then
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT").verticalScrollbar.Position = 18
End If
Mà trong SAP em không biết dòng 18 khác rỗng thì viết như thế nào. Ý tưởng là dòng 18 đã điền xong thì lăn chuột 18 dòng. rồi tiếp tục điền dữ liệu 19,20,21....đến 36. Sau đó tiếp tục lăn chuột 18 dòng nữa. Mà không biết viết thế nào. Cái này nhờ bác giúp đỡ.......
 
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom