累计签到:2 天 连续签到:1 天
灌水成绩
等级头衔
ID :
868
用户组 :
注册会员
积分成就
测量币 : 75 个
违规 : 0 次
在线时间 : 0 小时
注册时间 : 2026-4-6
最后登录 : 2026-4-25
勋章
联系方式
为了使用VBA定时查询工单BOM信息,从论坛和网上找了很多资料,最终整理出结果和大家分享。
1.可以实现自动登录SAP,使用script录制代码执行指定操作,本例使用COOIS查询工单BOM。
2.工单号预先放入Excel表格,SAP完成操作后退出登录。
3.操作过程无需点击,全部自动完成。注意SAP系统配置参考下图。
图片上传巨慢,文字描述代替吧。在SAP GUI选项设置中找到“Scripting”--“User Setting”--勾选"Enable Scripting",取消勾选下面的2个“Notify ……”.
Option Explicit
Public Connection
Public Session
Sub GetSAP_WO()
Dim usern, passw, dir, fname As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim SAPguiApp
With ThisWorkbook.Worksheets("SET")
usern = .Cells(1, "B").Value
passw = .Cells(2, "B").Value
dir = .Cells(3, "B").Value
fname = .Cells(4, "B").Value
End With
With ThisWorkbook.Worksheets(1)
.Range(Cells(3, "B"), Cells(.Range("b65536").End(xlUp).Row, "B")).Copy
End With
'调用SAP logon窗口
If Not IsObject(SAPguiApp) Then
Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")
End If
If Not IsObject(Connection) Then
Set Connection = SAPguiApp.OpenConnection("XXXX)", True) 'SAP连接设置
End If
If Not IsObject(Session) Then
Set Session = Connection.Children(0)
End If
'设置SAP登录信息
Session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "360"
Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = usern
Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = passw
Session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"
Session.findById("wnd[0]/usr/txtRSYST-LANGU").SetFocus
Session.findById("wnd[0]/usr/txtRSYST-LANGU").caretPosition = 2
Session.findById("wnd[0]").sendVKey 0
'MsgBox "登录成功"
With Session
'SAP操作录制的代码
.findById("wnd[0]/tbar[0]/okcd").Text = "/ncoois"
.findById("wnd[0]").sendVKey 0
.findById("wnd[0]/usr/ssub%_SUBSCREEN_TOPBLOCK:PPIO_ENTRY:1100/cmbPPIO_ENTRY_SC1100-PPIO_LISTTYP").Key = "PPIOM000"
.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/btn%_S_AUFNR_%_APP_%-VALU_PUSH").press
.findById("wnd[1]/tbar[0]/btn[24]").press
.findById("wnd[1]/tbar[0]/btn[8]").press
.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_WERKS-LOW").Text = "cn01"
.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_WERKS-LOW").SetFocus
.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_WERKS-LOW").caretPosition = 4
.findById("wnd[0]/tbar[1]/btn[8]").press
.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").pressToolbarButton "&NAVIGATION_PROFILE_TOOLBAR_EXPAND"
.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").pressToolbarContextButton "&MB_EXPORT"
.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").selectContextMenuItem "&PC"
.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").Select
.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").SetFocus
.findById("wnd[1]/tbar[0]/btn[0]").press
.findById("wnd[1]/usr/ctxtDY_PATH").Text = dir
.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = fname
.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 7
.findById("wnd[1]").sendVKey 0
.findById("wnd[1]/tbar[0]/btn[11]").press
End With
Set Session = Nothing
Connection.CloseSession ("ses[0]")
Set Connection = Nothing
Set SAPguiApp = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
测量协会论坛免责声明
重要声明:以上内容仅代表该作者观点,不代表本站测量协会论坛 立场。
如有涉及侵权请尽快告知,我们将会在第一时间处理。作者原创内容未经允许不得转载!
站长联系邮箱:1339305021@qq.com
站长联系微信:dddnnbbb