Hallo,
ich versuche aus SAP Daten nach Excel zu transferieren. Dazu habe ich ein Codebeispiel gefunden. Es funktioniert gut, bis zur Zeile
iRows = oALV.RowCount() - 1
Es kommt die Meldung: Laufzeitfehler '438': Objekt unterstützt Eigenschaft oder Methode nicht.
Hat irgendjemand eine Ahnung, warum das Objekt oALV die Methode RowCount() nicht im Bauch hat?
Danke Andreas
Hier der Code:
Sub SAP()
Dim oSapGui As Object
' Extras -> Verweise ... -> Durchsuchen ...
' C:\Program Files\SAP\FrontEnd\SAPgui\sapfewse.ocx
' Aktivieren: SAP GUI Scripting API
Dim oApp As SAPFEWSELib.GuiApplication
Dim oConn As SAPFEWSELib.GuiConnection
Dim oSession As SAPFEWSELib.GuiSession
' Ref auf SAPGUI
Set oSapGui = GetObject("SAPGUI")
If IsObject(oSapGui) Then
' Ref auf ScriptingEngine
Set oApp = oSapGui.GetScriptingEngine
If IsObject(oApp) Then
' Sind Connections vorhanden?
If oApp.Children.Count > 0 Then
' 1. Connection der App
Set oConn = oApp.Children(0)
' 1. Session der Connection
Set oSession = oConn.Children(0)
' Fenster minimieren
oSession.FindById("wnd[0]").Iconify
' SE16 starten
oSession.StartTransaction ("SE16")
' Selektionsbild
' Tabelle MARA
oSession.FindById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "MARA"
' Button "Tabelleninhalt (F7)"
oSession.FindById("wnd[0]/tbar[1]/btn[7]").Press
' max. 10 Einträge
oSession.FindById("wnd[0]/usr/txtMAX_SEL").Text = "10"
' Button "Ausführen (F8)"
oSession.FindById("wnd[0]/tbar[1]/btn[8]").Press
' ALV-Ansicht aktivieren
' Menü suchen
Dim oMenu As GuiComponent
Set oMenu = oSession.FindById("wnd[0]/mbar")
' Menüpunkt "Einstellungen"
Dim oOptions As GuiComponent
Set oOptions = oMenu.FindByName("Einstellungen", "GuiMenu")
' Menüpunkt "Benutzerparameter ..."
Dim oUserPar As GuiComponent
Set oUserPar = oOptions.FindByName("Benutzerparameter...", "GuiMenu")
oUserPar.Select
' Databrowser -> Ausgabeliste -> ALV-Grid-Darstellung
Dim oALVParam As GuiComponent
Set oALVParam = oSession.FindById("wnd[1]/usr/tabsG_TABSTRIP/tabp0400/ssubTOOLAREA:SAPLWB_CUSTOMIZING:0400/radRSEUMOD-TBALV_GRID")
' wenn ALV-Ansicht noch nicht ausgewählt, dann anhaken
If oALVParam.Selected = vbFalse Then
oALVParam.Select
End If
' Einstellungen übernehmen
oSession.FindById("wnd[1]/tbar[0]/btn[0]").Press
Set oUserPar = Nothing
Set oOptions = Nothing
Set oMenu = Nothing
' ALV-Grid holen
Dim oALV As GuiComponent
Set oALV = oSession.FindById("wnd[0]/usr/cntlGRID1/shellcont/shell")
' Zeilen
Dim iRows As Integer
iRows = oALV.RowCount() - 1
' Spalten
Dim iCols As Integer
iCols = oALV.ColumnCount() - 1
' Spaltentitel lesen
Dim oColumns
Set oColumns = oALV.ColumnOrder
Dim c As Integer
Dim r As Integer
' Überschriften einfügen
For c = 0 To iCols
ActiveWorkbook.ActiveSheet.Cells(1, c + 1) = oColumns(c)
Next
' Daten einfügen
For r = 0 To iRows
' ALV-Grid weiterscrollen, damit ein Update des Inhalts erfolgt
oALV.FirstVisibleRow = r
For c = 0 To iCols
ActiveWorkbook.ActiveSheet.Cells(r + 2, c + 1) = oALV.GetCellValue(r, CStr(oColumns(c)))
Next
Next
' Fenster maximieren
oSession.FindById("wnd[0]").Maximize
Else
MsgBox "Bitte an einem SAP-System anmelden."
End If
End If
End If
Set oSession = Nothing
Set oConn = Nothing
Set oApp = Nothing
Set oSapGui = Nothing
End Sub
|