VBS Script funkt. nicht

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Irithyll.

    VBS Script funkt. nicht

    Hallo Leute,

    ich bin sehr neu in dem Bereich. Ich zeichne über SAP Scripts auf die ich dann über Excel ausführen möchte.

    Wenn ich das Script ohne Excel ausführe funktioniert alles - nur über Excel wird im letzten Schritt ein Fehler versursacht, also wenn die Datei geschlossen werden soll... kommt der Fehler und lässt die Datei offen.

    SAP Script (Username habe ich rausgenommen):

    Quellcode

    1. If Not IsObject(application) Then
    2. Set SapGuiAuto = GetObject("SAPGUI")
    3. Set application = SapGuiAuto.GetScriptingEngine
    4. End If
    5. If Not IsObject(connection) Then
    6. Set connection = application.Children(0)
    7. End If
    8. If Not IsObject(session) Then
    9. Set session = connection.Children(0)
    10. End If
    11. If IsObject(WScript) Then
    12. WScript.ConnectObject session, "on"
    13. WScript.ConnectObject application, "on"
    14. End If
    15. session.findById("wnd[0]").maximize
    16. Dim objExcel
    17. Dim objSheet, intRow, i
    18. Set objExcel = GetObject(,"Excel.Application")
    19. session.findById("wnd[0]/tbar[0]/okcd").text = "LX02"
    20. session.findById("wnd[0]").sendVKey 0
    21. session.findById("wnd[0]/usr/ctxtS1_LGNUM").text = "ODH"
    22. session.findById("wnd[0]/usr/ctxtS1_LGTYP-LOW").text = "902"
    23. session.findById("wnd[0]/usr/ctxtWERKS-LOW").text = "4000"
    24. session.findById("wnd[0]/usr/ctxtWERKS-LOW").setFocus
    25. session.findById("wnd[0]/usr/ctxtWERKS-LOW").caretPosition = 4
    26. session.findById("wnd[0]/tbar[1]/btn[8]").press
    27. session.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[1]").select
    28. session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Users\NAME\Desktop\ProjektFile\TestScript"
    29. session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "LX02.XLSX"
    30. session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 9
    31. session.findById("wnd[1]/tbar[0]/btn[11]").press
    32. session.findById("wnd[0]/tbar[0]/btn[15]").press
    33. session.findById("wnd[0]/tbar[0]/btn[15]").press
    34. Set objSheet = objExcel.Workbooks("LX02.XLSX")
    35. objSheet.Close
    36. WScript.Quit


    Excel VBA:

    Quellcode

    1. Sub Lx03()
    2. Sub SAP
    3. Set WSHShell = CreateObject("WScript.Shell")
    4. WSHShell.Run """C:\Users\NAME\AppData\Roaming\SAP\SAP GUI\Scripts\LX02.vbs""", 0, True
    5. Set WSHShell = Nothing

    End Sub

    Fehler:

    Quellcode

    1. Index liegt außerhalb des Bereichs


    Vielen lieben Dank im Voraus.
    Moin moin

    Man nimmt die relevanten Parts des Ganzen und versucht allein anhand dessen zu erfassen, was nicht so wirklich richtig ist.

    Visual Basic-Quellcode

    1. Dim objExcel, objSheet
    2. Set objExcel = GetObject(,"Excel.Application")
    3. Set objSheet = objExcel.Workbooks("LX02.XLSX")
    4. objSheet.Close


    Wahrscheinlich heißt die Datei, die du schließen möchtest, nicht LX02.XLSX beziehungsweise existiert keine, die so heißt und gerade geöffnet ist.

    Des Weiteren würde ich die Variable objSheet in beispielsweise objWb (Wb - Workbook) umbenennen, denn es handelt sich ja um eines der geöffneten Workbooks und kein Sheet (Tabellenblatt). Auch würde ich den Variablen direkt die Typen zuweisen.

    Zusätzlich am Anfang jedes Moduls ein Option Explicit setzen zu lassen, wäre auch eine knorke Sache.



    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim objExcel As Object, objWb As Workbook
    3. Set objExcel = GetObject(,"Excel.Application")
    4. Set objWb = objExcel.Workbooks("ANDERER NAME.????")
    5. objWb.Close


    Wichtig ist hierbei, ob es sich immer um diese Datei LX02.XLSX handelt oder ob der Name auch mal anders sein kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Irithyll“ ()