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. Excel Matrix in Spalten transponieren mit VBA, Hilfe

    in Microsoft Excel Hilfe
    Excel Matrix in Spalten transponieren mit VBA, Hilfe: Hallo zusammen, ich brauche Hilfe für ein VBA-Makro in Excel. Vielleicht könnt ihr mir helfen, das wäre super nett. Fall: Ich habe eine große Tabelle als Matrix. Also für eine Zeile sind mehrere...
  3. Microsoft Excel - VBA Hilfe

    in Microsoft Excel Hilfe
    Microsoft Excel - VBA Hilfe: Hallo Zusammen, vorweg bitte ich mein Unwissen zu entschuldigen, leider habe ich noch nie mit VBA gearbeitet und somit quasi keine Kenntnisse. Folgendes Szenario: Zelle C12 enthält Preis X...
  4. Excel VBA Suche mit Hilfe Command Buttons anzeigen

    in Microsoft Excel Hilfe
    Excel VBA Suche mit Hilfe Command Buttons anzeigen: Hallo Ich habe eine UserForm erstellt, welche mit voneinander Abhängige Comboboxen sucht. Dabei wurde mir schon geholfen in diesen Forum. Ich würde mir gerne das Ergebnis mithilfe eines...
  5. Excel VBA Suche mit Hilfe von Comboboxen in Anhängigkeiten

    in Microsoft Excel Hilfe
    Excel VBA Suche mit Hilfe von Comboboxen in Anhängigkeiten: Hallo Ich bin unerfahren im Bereich VBA und versuche mich aber grade an einer (für mich) sehr komplexen Aufgabe. Ich würde gerne eine Suche über eine UserForm mit 4 Comboboxen erstellen....
  6. VBA Programmierung - Hilfe

    in Microsoft Excel Hilfe
    VBA Programmierung - Hilfe: Hallo zusammen, ich bin blutige VBA anfängerin in Excel und versuche mich einzuarbeiten. Im groben kann ich mir vorstellen wie der Aufbau ist, jedoch klappt es bei mir trotzdem nicht. Zur Übung...
  7. Hilfe ich bekomme mein Makro mit VBA nicht zum laufen :(

    in Microsoft Excel Hilfe
    Hilfe ich bekomme mein Makro mit VBA nicht zum laufen :(: Hallo, ich bin noch ein relativer Neuling mit VBA und habe das folgende Problem: Ich habe eine relativ simple Tabelle erstellt (Name = Eingabe) In einer zweiten Tabelle (Name = Sortiert)...
  8. Hilfe VBA Formular in Excel geht nicht richtig!

    in Microsoft Excel Hilfe
    Hilfe VBA Formular in Excel geht nicht richtig!: Hallo zusammen! Wer kann mir helfen? Was mache ich falsch das in Textbox1 das erfassen eines Datums obligatorisch wird? Hier der Code: Private Sub cmdNeu_Click() Dim rngTreffer As...
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