从excel输入数据到SAP GUI然后将特定的行和列输出回excel

时间:2018-06-06 19:50:35

标签: excel-vba sap-gui vba excel

最初的问题位于底部

更新:

以上是我目前使用的内容,但它给出了错误619,因为在找不到通知编号时SAP不会返回数据。

Sub QM03()

Set SapGuiAuto = GetObject("SAPGUI")  'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection

'启动交易以查看表格     session.StartTransaction" QM03"

Dim rngNotificationNumbers As Range
Set rngNotificationNumbers = Range("A4:A704")
Dim arrNotificationNumbers(700) As String
Dim cell As Range
Dim i As Long
i = 0

For i = 0 To UBound(arrNotificationNumbers) - 1
session.FindById("wnd[0]/usr/ctxtRIWO00-QM03").Text = arrNotificationNumbers(i)
session.FindById("wnd[0]").SendVKey 0
StatusBarText = session.FindById("wnd[0]/sbar/pane[0]").Text
If InStr(StatusBarText, " does not exist") Then
  GoTo NextIteration
End If

NextIteration:
Next

End Sub

`

***我是SAP和VBA的新手,但我真的需要一些帮助!

我试图从Excel工作表中获取通知编号,将其输入到QM03,然后从那里转到' Items'输出“缺陷类型”'要优秀,然后转到带有任务代码P020的行中的“项目任务”,并输出“任务文本”'优秀。

如果找不到通知编号,我想跳过它并转到下一个。

我正在使用SAP GUI for Windows。

我真的很感激任何帮助!谢谢!***

1 个答案:

答案 0 :(得分:1)

而不是

If InStr(StatusBarText, " does not exist") Then
  GoTo NextIteration
End If

NextIteration:

做那样的事

If InStr(StatusBarText, " does not exist") Then
  ' Do nothing 
else
   ' Do your stuff here
End If

并删除标签NextIteration:

PS您似乎错过了基本的编程知识,因此您可以查看here或其他适合初学者的网站