[英]Disable SAP logon popup in Excel VBA
I have a VBA code which helps to login into SAP.我有一个有助于登录 SAP 的 VBA 代码。 The code works fine but I am getting a warning popup when it establishes the connection.
该代码工作正常,但在建立连接时出现警告弹出窗口。
I need to either bypass or disable this warning popup.我需要绕过或禁用此警告弹出窗口。 I have written the code but it is not working.Please help
我已经写了代码,但它不起作用。请帮忙
Sub code1()
If Not IsObject(SAPguiApp) Then
Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")
End If
If Not IsObject(Connection) Then
Set Connection = SAPguiApp.OpenConnection("********", True)
End If
If Not IsObject(Session) Then
Set Session = Connection.Children(0)
End If
If Session.ActiveWindow.Name = "wnd[1]" Then
If Session.findbyid("wnd[1]").Text Like "A script*" Then Session.findbyid("wnd[0]/usr/btnSPOP-OPTION1").press
End If
Session.findbyid("wnd[0]/usr/txtRSYST-MANDT").Text = "103"
Session.findbyid("wnd[0]/usr/txtRSYST-BNAME").Text = "*****"
Session.findbyid("wnd[0]/usr/txtRSYST-LANGU").SetFocus
Session.findbyid("wnd[0]/usr/txtRSYST-LANGU").caretPosition = 2
Session.findbyid("wnd[0]").sendVKey 0
Session.findbyid("wnd[0]/tbar[0]/okcd").Text = "/nsu01"
Session.findbyid("wnd[0]").sendVKey 0
Session.findbyid("wnd[0]").maximize
End Sub
Please note : I know that this popup can be disabled in SAP GUI but not in a favour to do the same because it can lead to a security threat in future.请注意:我知道可以在 SAP GUI 中禁用此弹出窗口,但不赞成这样做,因为它可能会导致未来的安全威胁。 please advise something to do with the help of a code like below :
请在如下代码的帮助下提出建议:
If Session.ActiveWindow.Name = "wnd 1 " Then If Session.findbyid("wnd 1 ").Text Like "A script*" Then Session.findbyid("wnd[0]/usr/btnSPOP-OPTION1").press End If If Session.ActiveWindow.Name = "wnd 1 " Then If Session.findbyid("wnd 1 ").Text Like "A script*" Then Session.findbyid("wnd[0]/usr/btnSPOP-OPTION1").press万一
These are settings in the registry which you can turn off and turn on like you want I have a class clsSapgui for that这些是注册表中的设置,您可以根据需要关闭和打开它们我有一个类 clsSapgui
Option Explicit
Const mRegNameBase = "HKEY_CURRENT_USER\Software\SAP\SAPGUI Front\SAP Frontend Server\Security\"
Const mUserScripting = "UserScripting"
Const mWarnOnAttach = "WarnOnAttach"
Const mWarnOnConnection = "WarnOnConnection"
Const mSecurityLevel = "SecurityLevel"
Dim mRegKey As New clsRegistry
Property Get UserScripting() As Boolean
UserScripting = ReadRegKey(mUserScripting)
End Property
Property Let UserScripting(newVal As Boolean)
WriteRegKey mUserScripting, CBoolToVal(newVal)
End Property
Property Get WarnOnAttach() As Boolean
WarnOnAttach = ReadRegKey(mWarnOnAttach)
End Property
Property Let WarnOnAttach(newVal As Boolean)
WriteRegKey mWarnOnAttach, CBoolToVal(newVal)
End Property
Property Get WarnOnConnection() As Boolean
WarnOnConnection = ReadRegKey(mWarnOnConnection)
End Property
Property Let WarnOnConnection(newVal As Boolean)
WriteRegKey mWarnOnConnection, CBoolToVal(newVal)
End Property
Property Get SecurityLevel() As Boolean
SecurityLevel = ReadRegKey(mSecurityLevel)
End Property
Property Let SecurityLevel(newVal As Boolean)
WriteRegKey mSecurityLevel, CBoolToVal(newVal)
End Property
Private Function CBoolToVal(bVal As Boolean) As Byte
If bVal Then
CBoolToVal = 1
Else
CBoolToVal = 0
End If
End Function
Private Function ReadRegKey(sRegValue As String) As String
Dim sRegName As String
On Error GoTo NoRegkey
sRegName = mRegNameBase & sRegValue
ReadRegKey = mRegKey.ReadRegKey(sRegName)
Exit Function
NoRegkey:
ReadRegKey = 0
End Function
Private Function WriteRegKey(sRegKey As String, ByVal sRegValue As String) As Boolean
Dim sRegName As String
On Error GoTo NoRegkey
sRegName = mRegNameBase & sRegKey
WriteRegKey = mRegKey.WriteRegKey(sRegName, sRegValue, "REG_DWORD")
Exit Function
NoRegkey:
WriteRegKey = False
End Function
And then you can turn off the warnings completely然后你可以完全关闭警告
Sub Silence()
Dim mySapGui As New clsSapGui
With mySapGui
.UserScripting = True
.SecurityLevel = False
.WarnOnAttach = False
.WarnOnConnection = False
End With
End Sub
And you turn them on again with然后你再次打开它们
Sub Show_Warnings()
Dim mySapGui As New clsSapGui
With mySapGui
.UserScripting = True
.SecurityLevel = True
.WarnOnAttach = True
.WarnOnConnection = True
End With
End Sub
If you want to you can of course add new methods to the class which would be neater如果你愿意,你当然可以向类添加新方法,这样会更整洁
The class clsRegistry looks like that类 clsRegistry 看起来像这样
Option Explicit
Function ReadRegKey(RegKey As String) As Variant
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
On Error GoTo NoRegkey
ReadRegKey = wsh.regread(RegKey)
Set wsh = Nothing
Exit Function
NoRegkey:
ReadRegKey = ""
End Function
Function DeleteRegKey(RegKey As String) As Boolean
' http://msdn.microsoft.com/en-us/library/yfdfhz1b(v=vs.84).aspx
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
On Error GoTo NoRegkey
wsh.RegDelete RegKey
DeleteRegKey = True
Set wsh = Nothing
Exit Function
NoRegkey:
DeleteRegKey = False
End Function
Function WriteRegKey(RegName As String, RegValue As Variant, RegType As String) As Boolean
' http://msdn.microsoft.com/en-us/library/yfdfhz1b(v=vs.84).aspx
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
On Error GoTo NoRegkey
wsh.RegWrite RegName, RegValue, RegType
WriteRegKey = True
Set wsh = Nothing
Exit Function
NoRegkey:
WriteRegKey = False
End Function
the setting is in the SAP GUI .该设置在 SAP GUI 中。 Under the security folder .
在安全文件夹下。
SAP Gui Screenshot SAP GUI 屏幕截图
https://blogs.sap.com/2015/06/09/tips-stop-the-pop-up-sap-gui-security-remeber-my-decision/ https://blogs.sap.com/2015/06/09/tips-stop-the-pop-up-sap-gui-security-remeber-my-decision/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.