|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
我在以前公司手工RUN标准成本的时候写过一个比较粗糙的;有几点需要注意:一个是我的运行环境是WIN7+SAP ECC6.0;只能有一个活动的SAP GUI;T-Code是CK11N的情况。如果你需要其他T-Code,你要自己录一个然后修改一个。
- Option Explicit
- Public SapGuiAuto As Object
- Public Applicat As Object
- Public Connection As Object
- Public Session As Object
- Public StaBar As Object
- Public SubTbar As Object
- Public subWindow As Object
- Public arr '数据区域
- Function Attach() As Boolean '是否调用SAPGUI
- On Error Resume Next
- Set SapGuiAuto = GetObject("SAPGUI")
- On Error GoTo 0
- If SapGuiAuto Is Nothing Then
- Attach = False
- Exit Function
- Else
- Set Applicat = SapGuiAuto.GetScriptingEngine
- On Error GoTo 0
- End If
- If Applicat Is Nothing Then
- MsgBox "Scripting Disabled"
- Attach = False
- Exit Function
- End If
- If Applicat.Children.Count = 0 Then
- Attach = False
- Exit Function
- Else
- Set Connection = Applicat.Children(0)
- On Error GoTo 0
- End If
- Set Session = Connection.Children(0)
- On Error GoTo 0
- If Session.ActiveWindow.text = "SAP" Then
- Attach = False
- Exit Function
- End If
- Attach = True
- End Function
- '==========================================================================
- Sub CK11N()
- Dim i&, j&
- Dim arr
- Dim t
- t = Timer
- arr = Sheet1.UsedRange
- If Attach Then
- 'Stop
- For i = 2 To UBound(arr)
- On Error GoTo errLine
- Session.findById("wnd[0]/tbar[0]/okcd").text = "ck11n"
- Session.findById("wnd[0]").sendVKey 0
- Call WaitMoment(2)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/subKOPF:SAPLCKDI:4620/ctxtCKI64A-MATNR").text = arr(i, 1)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/subKOPF:SAPLCKDI:4620/ctxtCKI64A-WERKS").text = arr(i, 2)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-KLVAR").text = arr(i, 3)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-TVERS").text = arr(i, 4)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpALLG/ssubALLGEMEIN:SAPLCKDI:4612/ctxtCKI64A-UEBID").text = arr(i, 5)
- Session.findById("wnd[0]").sendVKey 0
- Call WaitMoment(2)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-KADAT").text = arr(i, 6)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-BIDAT").text = arr(i, 7)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-ALDAT").text = arr(i, 8)
- Session.findById("wnd[0]/usr/subALL:SAPLCKDI:4611/tabsREITER/tabpTERM/ssubTERM:SAPLCKDI:4614/ctxtCKI64A-BWDAT").text = arr(i, 8)
- Session.findById("wnd[0]").sendVKey 0
- Call WaitMoment(2)
- Session.findById("wnd[0]/tbar[0]/btn[11]").press
- Session.findById("wnd[1]/tbar[0]/btn[0]").press
- Call WaitMoment(2)
- Session.findById("wnd[0]/tbar[0]/btn[3]").press
- Session.findById("wnd[0]/tbar[0]/btn[3]").press
-
- Sheet1.Rows(i).Interior.ColorIndex = 33
- Next i
- End If
- MsgBox ("Done " & (Timer - t))
- Exit Sub
-
- errLine:
- MsgBox ("ERROR " & i)
- Stop
- End Sub
- Private Sub WaitMoment(rMoment!)
- Dim rT!
- rT = Timer
- Do While Timer - rT < rMoment
- DoEvents
- Loop
- End Sub
复制代码
|
|