You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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服务器端的脚本权限配置,本地客户端操作(重装、添加引用)无法解决这类服务器端限制。

具体修复方案

  1. 服务器端配置检查(需Basis管理员协助)

    • 登录SAP服务器,执行事务码RZ11:
      • 查找参数sapgui/user_scripting,确保其值设置为TRUE(启用全局脚本支持);
      • 检查参数sapgui/user_scripting_disable_recording,若值为TRUE会禁用录制功能,需修改为FALSE。
    • 部分系统会按用户组分配权限,需确认当前登录用户所属组被允许使用GUI脚本功能。
  2. 本地客户端补充验证

    • 打开SAP Logon,右键目标系统→属性→高级,勾选启用脚本选项;
    • 进入SAP GUI后,点击左上角菜单→选项→脚本设置,确认勾选启用脚本及启用录制(若有该选项)。
  3. 代码健壮性优化

    • 在获取连接和会话前增加空值判断,避免因连接/会话不存在触发错误:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:55:18