Office: HILFE: Excel VBA & SAP Problem

Helfe beim Thema HILFE: Excel VBA & SAP Problem in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen. Ich bin ein absoluter Neuling im Bereich BAPI und VBA. Nun habe ich mir einen Code aus dem Internet übernommen, der funktionieren... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von dich2712, 27. Juli 2012.

  1. HILFE: Excel VBA & SAP Problem


    Hallo Zusammen.

    Ich bin ein absoluter Neuling im Bereich BAPI und VBA.
    Nun habe ich mir einen Code aus dem Internet übernommen, der funktionieren sollte.
    Die Anmeldung am SAP System funktioniert auch aus Excel heraus.

    Allerdings bekomme ich danach eine Fehlermeldung : Objektvariable oder With-Blockvariable nicht festgelegt. (Err91)

    So sehr ich mich auch anstrenge finde ich keine Variable, die nicht deklariert ist. Ich VERZWEIFEL !!!! HILFE: Excel VBA & SAP Problem :(

    Ich hoffe, dass mir jemand helfen kann.

    Code:
    
    Option Explicit
    
    ' Declaration for the necessary objects
    Dim objBAPIControl, objConnection, objCompanyCodes, functionctrl As Object
    Dim login As Boolean
    Dim Destination_System, i As Integer
    Dim objTable As Table
    
    
    
    
    Private Sub GetCompanyList()
    
    
    '
    'Deklarieren
    '
    
    Set objBAPIControl = CreateObject("SAP.Functions")
    Set objConnection = objBAPIControl.Connection
    '
    'Einloggen mit Initialdaten
    '
    Destination_System = ActiveSheet.Cells(11, 2).Value + 2
    objConnection.client = ActiveSheet.Cells(3, Destination_System).Value
    objConnection.user = InputBox("Bitte Usernamen eingeben")
    objConnection.Language = ActiveSheet.Cells(7, Destination_System).Value
    objConnection.hostname = ActiveSheet.Cells(6, Destination_System).Value
    objConnection.Password = InputBoxPW("Bitte Password eingeben")
    objConnection.SystemNumber = ActiveSheet.Cells(9, Destination_System).Value
    objConnection.System = ActiveSheet.Cells(8, Destination_System).Value
    objConnection.Destination = ActiveSheet.Cells(8, Destination_System).Value
    If objConnection.logon(1, True) <> True Then
        MsgBox "Keine Verbindung zu SAP!"
        Exit Sub
    End If
    
    
    On Error Resume Next
    ' The required BAPISet
    objCompanyCodes = objBAPIControl.Add("BAPI_COMPANYCODE_GETLIST")
    objCompanyCodes.call
    ' Getting the result set in a table
    
    Set objTable = objCompanyCodes.Tables("CompanyCodeList")
    ' Printing the number of company codes
    MsgBox "Row count :" & objTable.RowCount
    ' Displaying the company codes to the Excel Sheet
    For i = 1 To objTable.RowCount
    Tabelle2.Cells(8 + i, 1) = objTable.Cell(i, 1)
    Tabelle2.Cells(8 + i, 2) = objTable.Cell(i, 2)
    Next i
    'if any error then displaying the same to the users
    If Err Then
    MsgBox Err.Number
    End If
    
    'Beende Verbindung zu R/3 !
    '
    objBAPIControl.Connection.logoff
    '
    'Release the objects to free storage space
    '
    Set objConnection = Nothing
    Set functionctrl = Nothing
    MsgBox "Programm beendet!", 0, "Exit"
    End Sub
    
    Ich hoffe, dass mir irgendjemand hier im Expertenforum kurzfristig helfen kann.

    Viele Grüße
    Chris
     
    dich2712, 27. Juli 2012
    #1
  2. maninweb
    maninweb MVP für Microsoft Excel
    Hallo dich2712...

    versuche mal bitte wie folgt, die Variablen zu deklarieren, denn hintereinander
    geschrieben wäre nur functionctrl ein Objekt, die anderen Variants:
    Code:
    Dim objBAPIControl As Object
    Dim objConnection As Object
    Dim objCompanyCodes As Object
    Dim functionctrl As Object
    Dim login As Boolean
    Dim Destination_System As Integer
    Dim i As Integer
    Dim objTable As Table
    
    Gruß
     
    Zuletzt bearbeitet: 27. Juli 2012
    maninweb, 27. Juli 2012
    #2
  3. Hallo maniweb.

    Ganz lieben Dank für die Hilfe.
    Leider habe ich aber immer noch den Fehler.
    Gibt es noch eine Idee an was es liegen könnte ?

    Vielen Dank im Vorab.
    Chris
     
    dich2712, 27. Juli 2012
    #3
  4. maninweb
    maninweb MVP für Microsoft Excel

    HILFE: Excel VBA & SAP Problem

    Hallo dich2712...

    leider steht mir hier kein SAP bzw. BAPI hier zur Verfügung; daher kann ich auch mehr raten,
    als genaue Ideen entwickeln. Wenn Du den Code ausführst, der Fehler kommt und auf Debuggen
    klickst, bleibt der Code an einer bestimmten Stelle stehen und wenn Ja, wo?

    Du könntest auch diese Prozedur in einer separaten Testdatei testen; was liefert diese?
    Code:
    Public Sub SAPTestFunction()
      
        Dim objSAP As Object
        
        On Error Resume Next
        
        Set objSAP = CreateObject("SAP.Functions")
        
        If objSAP Is Nothing Then
          
          MsgBox "SAP Objekterzeugung fehlerhaft." & vbCrLf & CStr(Err.Number) & " " & Err.Description
          
        Else
          
          MsgBox "SAP Objekterzeugung erfolgreich"
          
        End If
        
        Set objSAP = Nothing
        
      End Sub
    
    Gruß
     
    maninweb, 27. Juli 2012
    #4
  5. Hallo maniweb.

    Besten Dank !

    Ich habe Deinen Code ausprobiert und die Meldung "SAP Objekterzeugung erfolgreich" erhalten.

    Ich habe die Fehlerabfrage bei mir mal auskommentiert.
    Ein Klick auf Debuggen bringt mich zu folgender Zeile :

    objCompanyCodes = objBAPIControl.Add("BAPI_COMPANYCODE_GETLIST")

    Fehler : Objektvariable oder With-Blockvariable nicht festgelegt. (Err91)

    Hoffe, das hilft weiter :)

    Viele Grüße
    Chris
     
    dich2712, 27. Juli 2012
    #5
  6. maninweb
    maninweb MVP für Microsoft Excel
    Hallo dich2712...

    Ok, das bringt uns ja schon einen Schritt weiter, denn das Objekt wird erzeugt. Der Debugger
    hat Dich zur Zeile
    objCompanyCodes = objBAPIControl.Add() geführt. Schreibe mal anstelle
    Deiner Zeile folgendes, da es sich um ein Objekt handelt, welches Du generierst...

    Code:
    [COLOR=#333333]Set [/COLOR][COLOR=#333333]objCompanyCodes = objBAPIControl.Add("BAPI_COMPANYCODE_GETLIST")[/COLOR]

    Gruß
     
    maninweb, 27. Juli 2012
    #6
  7. schatzi Super-Moderator
    Hallo!

    Könnte es sein, dass dort ein "Set" fehlt?

    edit: zu langsam...
     
    schatzi, 27. Juli 2012
    #7
  8. HILFE: Excel VBA & SAP Problem

    Hallo maniweb. Hallo Schatzi.

    Ganz lieben Dank für die schnelle Antwort.
    An der Stelle läuft der Code jetzt dank dem "Set" tatsächlich durch *freu*

    Aber bei

    MsgBox "Row count :" & objTable.RowCount

    steigt er jetzt mit der selben Fehlermeldung aus HILFE: Excel VBA & SAP Problem :(

    Und das obwohl ein paar Zeilen zuvor

    Set objTable = objCompanyCodes.Tables("CompanyCodeList")

    eingefügt ist.

    Habt Ihr hierzu auch noch eine Idee ?

    Viele Grüße
    Chris
     
    dich2712, 27. Juli 2012
    #8
  9. schatzi Super-Moderator
    Hallo!

    Eigentlich habe ich gar keine Ahnung von VBA...:p
    Aber vielleicht passt

    MsgBox "Row count :" & objTable.Rows.Count
     
    schatzi, 27. Juli 2012
    #9
  10. maninweb
    maninweb MVP für Microsoft Excel
    Hallo dich2712...

    könntest hier probieren, mal folgenden Code anstelle einzusetzen und testen...
    Code:
    ' Printing the number of company codes
    ' MsgBox "Row count :" & objTable.RowCount
    
      MsgBox "Test :" & CBool(objTable Is Nothing)
    
    ' Displaying the company codes to the Excel Sheet
    ' For i = 1 To objTable.RowCount
    ' Tabelle2.Cells(8 + i, 1) = objTable.Cell(i, 1)
    ' Tabelle2.Cells(8 + i, 2) = objTable.Cell(i, 2)
    ' Next i
    
    Was meldet die MsgBox?

    Gruß
     
    maninweb, 27. Juli 2012
    #10
  11. Hallo maniweb.

    Die MsgBox gibt mir den Wert "Wahr" aus.

    Hilft das weiter ? :)

    Viele Grüße
    Chris
     
    dich2712, 27. Juli 2012
    #11
  12. maninweb
    maninweb MVP für Microsoft Excel
    Hallo dich2712...

    Ja, das heißt, dass das Objekt nicht existiert bzw. nicht initialisiert wurde.
    Bist Du Dir sicher, dass die Tabelle, die Du ansprechen möchtest, auch
    CompanyCodeList heißt?

    Gruß
     
    maninweb, 27. Juli 2012
    #12
  13. HILFE: Excel VBA & SAP Problem

    Hallo maniweb.
    Laut der Bapi Liste in SAP ist dem so.
    Ich werde am Wochenende nochmal ein bisschen googlen. Ich poste hier auch gleich nochmal den Link von der Seite, von der ich das Script habe.
    Ich bin jetzt schon zu Hause und werde erst am Montag da weitermachen können, da ich ja auch hier kein SAP habe. :)
    Vielen Dank nochmal schon einmal für die bisherige Hilfe.
    Gerne würde ich mich am Montag nochmal zu dem Thema melden :)

    Wünsche Dir ein schönes Wochenende.

    Gruß
    Chris
     
    dich2712, 27. Juli 2012
    #13
  14. dich2712, 27. Juli 2012
    #14
  15. Hallo nochmal.

    Ich habe am Wochenende viel gelernt und einige Dinge verstanden :)
    Ich habe jetzt den Code nochmal verändert und an meine Wünsche angepasst.
    Mein Ziel ist es zukünftig alle Mitarbeiterstammdaten per VBA aus dem SAP System auszulesen und in Excel zu importieren.
    Angefangen habe ich nun mit folgendem Skript.

    Allerdings habe ich nun immer noch den Fehler, dass mir das Programm bei der Zeile :

    Code:
     objEmployeeList.exports("PersonnelNumber") = ""
    Die Meldung lautet : Typen unverträglich / Fehlercode 13

    Außerdem bin ich mir noch nicht sicher, wie ich die Daten aus der Ergebnisliste der Daten zur Person ( Personaldata ) dann auslesen kann.


    Code:
    'Option Explicit
    
    
    Private Sub GetUserList()
    '
    'Deklaration
    '
    Dim Destination_System As Integer
    Dim objBAPIControl As Object 'Function Control
    Dim sapConnection As Object 'Connection object
    
    Set objBAPIControl = CreateObject("SAP.Functions")
    Set sapConnection = objBAPIControl.Connection
    
    '
    'Logon with initial values
    'ActiveSheet is the sheet calling the Macro / Cells(x, y) refers to the row, column in the spreadsheet
    '
    
    Worksheets(1).Select
    
    Destination_System = ActiveSheet.Cells(11, 2).Value + 2 'Add 2 to retrieve the column that contains the definiton
    sapConnection.client = ActiveSheet.Cells(3, Destination_System).Value
    sapConnection.user = InputBox("Bitte Usernamen eingeben")
    sapConnection.Language = ActiveSheet.Cells(7, Destination_System).Value
    sapConnection.hostname = ActiveSheet.Cells(6, Destination_System).Value
    sapConnection.Password = InputBoxPW("Bitte Password eingeben")
    sapConnection.SystemNumber = ActiveSheet.Cells(9, Destination_System).Value
    sapConnection.System = ActiveSheet.Cells(8, Destination_System).Value
    sapConnection.Destination = ActiveSheet.Cells(8, Destination_System).Value
    
    If sapConnection.logon(1, True) <> True Then
        MsgBox "No connection to R/3!"
        Exit Sub 'Programm beenden
    End If
    Set objEmployeeList = objBAPIControl.Add("BAPI_EMPLOYEE_GETLIST")
    
    'Vorbereitung des Excel Sheets
    '
    
    Worksheets(2).Select
    Cells.Clear
    Range("A1").Font.Italic = True
    Range("A2:E2").Font.Bold = True
    ActiveSheet.Cells(2, 1) = "Personalnummer"
    ActiveSheet.Cells(2, 2) = "Birthdate"
    ActiveSheet.Cells(2, 3) = "Gender"
    ActiveSheet.Cells(2, 4) = "National"
    ActiveSheet.Cells(2, 5) = "Langu"
    
    'Define the import parameters for BAPI_EMPLOYEE_GETLIST
    '
    
    objEmployeeList.exports("PersonnelNumber") = ""
    'objEmployeeList.exports("") = ""
    
    'Aufruf des 1. BAPI: BAPI_EMPLOYEE_GETLIST
    '
    
    returnFunc = objEmployeeList.Call
    If returnFunc = True Then
        Dim objTable As Object
        Set objTable = objEmployeeList.Tables("PersonalData")
        ActiveSheet.Cells(1, 1) = "Employee count :" & objTable.RowCount
        For i = 1 To objTable.RowCount
        
        'Unterschiedliche Farbgebung der Zeilen
        '
            
            If i Mod 2 = 0 Then
                For j = 1 To 5
                    ActiveSheet.Cells(2 + i, j).Interior.Color = RGB(165, 162, 165)
                Next j
            Else
            For j = 1 To 5
                ActiveSheet.Cells(2 + i, j).Interior.Color = RGB(214, 211, 206)
            Next j
            End If
            ActiveSheet.Cells(2 + i, 1) = objTable.Cell(i, 1)
            
            'Define the import parameters for BAPI_USER_GET_DETAIL
            '
            
            objEmployeeDetail.exports("PERNO") = objTable.Cell(i, 1)
            
        Next i
    Else
        MsgBox "Error when accessing BAPI_EMPLOYEE_GETLIST in R/3 ! "
        Exit Sub
    End If
    
    'Close connection to R/3 !
    '
    
    objBAPIControl.Connection.logoff
    
    '
    'Release the objects to free storage space
    '
    
    Set sapConnection = Nothing
    Set functionctrl = Nothing
    MsgBox "Program terminated!", 0, "Exit"
    End Sub
    
    Ganz lieben Dank nochmal !

    Gruß
    Chris
     
    dich2712, 30. Juli 2012
    #15
Thema:

HILFE: Excel VBA & SAP Problem

Die Seite wird geladen...
  1. HILFE: Excel VBA & SAP Problem - Similar Threads - HILFE Excel VBA

  2. Speichern mit dem Titel der Zelle A2

    in Microsoft Excel Hilfe
    Speichern mit dem Titel der Zelle A2: Moin moin, Ich habe per Makro einen Arbeitsablauf aufgezeichnet der soweit auch funktioniert. Dieser Endet jedoch im "Speichern Unter" Fenster, welches durch das Klicken von "Drucken als PDF"...
  3. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  4. Automatisch aktualisierende Tabelle? Hilfe!! :-)

    in Microsoft Excel Hilfe
    Automatisch aktualisierende Tabelle? Hilfe!! :-): Hallo zusammen, ich habe da ein kleines Excel-Problem und komme einfach nicht auf die Lösung. Ich habe 25 riesige Tabellen und möchte diese in einer Tabelle zusammen, wenn eine bestimmte...
  5. Hilfe bei VBA-Programmierung

    in Microsoft Excel Hilfe
    Hilfe bei VBA-Programmierung: Hallöchen zusammen, ich bräuchte mal wieder eure Hilfe. Diesmal geht es um ein VBA-Programm bzw. -Funktion. Folgender Sachverhalt: Ich habe Rohdaten in einer Textdatei, die ich mir in Excel...
  6. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  7. Hilfe

    in Microsoft Excel Hilfe
    Hilfe: Liebe Alle, ich bin ganz neu in diesem Forum und bräuchte Hilfe zu einem Excel Projekt. Ich möchte (siehe Bild 1) das die Felder die dort ausgefüllt werden automatisch in Bild 2 übertragen in...
  8. Hilfe beim Makro

    in Microsoft Excel Hilfe
    Hilfe beim Makro: Hallo alle! Kennt sich jemand von euch beim Thema Makros aus und könnte mir bei meiner Angelegenheit helfen? Ich habe unten eine Datei angehängt. Ich habe dort 2 Register: Einmal "Reinkopieren"...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden