SAP GUI VBA脚本运行时错误'91'及录制故障求助
SAP GUI VBA脚本运行错误91及录制功能失效问题解决
问题概述
- 原本正常运行的SAP GUI Excel VBA脚本抛出运行时错误'91':对象变量或With块变量未设置,报错行为
Set objConn = objgui.children(0),已登录SAP仍触发错误。 - SAP脚本录制功能完全失效:点击录制/结束按钮无反应,无法生成录制内容和保存文件,同时弹出提示“SAP frontend server: Scripting support is disabled on the server”。
- 已尝试重装SAP Logon 770、添加VBA引用「SAP GUI Scripting API」,问题未得到解决。
关联VBA代码
Option Explicit Public SapGuiAuto Public objGui As GuiApplication Public objConn As GuiConnection Public session As GuiSession Sub dd() Dim i As Integer Dim lastrow As Long Set SapGuiAuto = GetObject("SAPGUI") Set objGui = SapGuiAuto.GetScriptingEngine ' 原代码中的#为多余符号,需删除 Set objConn = objGui.Children(0) Set session = objConn.Children(0) lastrow = ThisWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row '定义数据最后一行位置 On Error Resume Next For i = 2 To lastrow '遍历第2行至最后一行数据 If ActiveSheet.Cells(i, 1) = "Z2" Then session.findById("wnd[0]/tbar[0]/okcd").Text = "niw21" '在SAP中输入事务码niw21 End If Next i End Sub
问题根源与解决步骤
核心原因
报错和录制失效的关键提示是**“Scripting support is disabled on the server”**,说明问题出在SAP服务器端的脚本权限配置,本地客户端操作(重装、添加引用)无法解决这类服务器端限制。
具体修复方案
服务器端配置检查(需Basis管理员协助)
- 登录SAP服务器,执行事务码
RZ11:- 查找参数
sapgui/user_scripting,确保其值设置为TRUE(启用全局脚本支持); - 检查参数
sapgui/user_scripting_disable_recording,若值为TRUE会禁用录制功能,需修改为FALSE。
- 查找参数
- 部分系统会按用户组分配权限,需确认当前登录用户所属组被允许使用GUI脚本功能。
- 登录SAP服务器,执行事务码
本地客户端补充验证
- 打开SAP Logon,右键目标系统→属性→高级,勾选启用脚本选项;
- 进入SAP GUI后,点击左上角菜单→选项→脚本设置,确认勾选启用脚本及启用录制(若有该选项)。
代码健壮性优化
- 在获取连接和会话前增加空值判断,避免因连接/会话不存在触发错误:
Set SapGuiAuto = GetObject("SAPGUI") Set objGui = SapGuiAuto.GetScriptingEngine ' 检查是否存在有效SAP连接 If objGui.Children.Count = 0 Then MsgBox "未检测到SAP连接,请先登录SAP系统" Exit Sub End If Set objConn = objGui.Children(0) ' 检查是否存在有效会话 If objConn.Children.Count = 0 Then MsgBox "未检测到SAP会话" Exit Sub End If Set session = objConn.Children(0) - 删除原代码中
Set objConn = objGui.Children(0)前的#符号,该符号会导致语法错误。
- 在获取连接和会话前增加空值判断,避免因连接/会话不存在触发错误:
内容的提问来源于stack exchange,提问作者lee
相关产品推荐
相关产品推荐

