Seite 1 von 1

Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 11:09
von Elias_HH
Hallo liebe Community,

ich habe ein ganz komisches Problem. Ich fange mal einfach an. Ich möchte einen sehr einfachen Python Code über VBA starten. Auf meiner Recherche bin ich in sehr vielen Videos und Beiträgen auf den folgenden VBA-Skript gestoßen:

Code: Alles auswählen

Sub RunPythonScript()

Dim objShell As Object
Dim PythonExePath, PythonScriptPath As String

    Set objShell = VBA.CreateObject("Wscript.Shell")
    
    'PythonExePath = """ Insert Path to Python EXE here """
    'PythonScriptPath = " Insert Path to Python SCRIPT here "
    
    objShell.Run PythonExePath & PythonScriptPath

End Sub
Anschließend erstelle ich auf der Tabelle ein Button und weise ihm den erstellen Makro zu, sodass nach dem Klick das Makro gestartet und folglich das Python Skript. Mein Skript enthält lediglich folgende Zeile, um einfach zu sehen, ob es den überhaupt klappt und er eine Textdatei erstellt:

Code: Alles auswählen

f = open("demofile2.txt", "w")
Jetzt kommt das komische. Es klappt ! Doch sobald ich die Excel schließe und dann wieder öffne funktioniert der Aufruf des Skriptes nicht mehr, sprich: es wird keine .txt-Datei erstellt, obwohl ich nichts geändert habe. Kennt jemand dieses Problem ?

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 11:25
von Sirius3
"Klappt nicht" ist eine sehr schlechte Fehlerbeschreibung, da sie keine Information enthält, was denn statt dessen passiert.
Warum sind denn die Zeilen mit PythonExePath und PythonScriptPath auskommentiert?

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 11:36
von Elias_HH
Sirius3 hat geschrieben: Mittwoch 14. Oktober 2020, 11:25 "Klappt nicht" ist eine sehr schlechte Fehlerbeschreibung, da sie keine Information enthält, was denn statt dessen passiert.
Warum sind denn die Zeilen mit PythonExePath und PythonScriptPath auskommentiert?
Sorry, ich habe so eben korrigiert. Aber auch nochmal hier: Vorher ist es ja so, dass wenn ich auf den Button klicke, wird mir eine .txt-Datei erstellt. Doch sobald ich die Excel schließe, öffne und dann wieder auf den Button klicke wird mir keine .txt-Datei erstellt. Die Zeilen sind auskommentiert, weil das eine Vorlage ist. Dort muss man den Pfad von seinem python.exe einfügen und den Pfad wo sich die auszuführende Python-Datei befindet. Das VBA-Skript basiert auf dieses Video:

https://www.youtube.com/watch?v=MgL9IOCFZ0U

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 11:42
von sparrow
Wenn sich hier nicht zufällig mal jemand mit VBA beschäftigt hat, wird es hier wohl schwierig mit der Antwort.
Die Zeilen sind übrigens noch immer auskommentiert.
Ich denke, deutlich bessere Chancen hast du da, wo man sich mit VBA beschäftigt.

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 11:59
von Sirius3
Du mußt halt in VBA debuggen, ob die Funktion überhaupt aufgerufen wird, und wenn ja, ob objShell.run eine Fehlermeldung zurückgibt.

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 12:03
von Elias_HH
Sirius3 hat geschrieben: Mittwoch 14. Oktober 2020, 11:59 Du mußt halt in VBA debuggen, ob die Funktion überhaupt aufgerufen wird, und wenn ja, ob objShell.run eine Fehlermeldung zurückgibt.
Die Funktion wird ja aufgerufen, es klappt alles wunderbar. Doch sobald ich die Excel schließe und neu öffne, dann klappt es nicht mehr.

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Mittwoch 14. Oktober 2020, 12:41
von Sirius3
Ja, aber was passiert, wenn es nicht mehr klappt? Klappt es dann nicht mehr, dass die Funktion aufgerufen wird, oder klappt es nicht mehr, dass das Skript gestartet wird, oder klappt es nicht mehr, dass die Datei geschrieben wird.

Re: Python Code über Excel (VBA) starten (Komisches Problem)

Verfasst: Donnerstag 6. Mai 2021, 11:54
von Joerg-H
Hallo,

falls es noch jemanden interessiert: Ich hatte genau das gleiche Problem wie Elias_HH. Das Shell-Startverzeichnis war unterschiedlich und das Python-Programm konnte eine Input-Datei nicht finden. Python-Code geändert und jetzt funktioniert der Aufruf via Excel/VBA, egal ob die Excel-Datei neu erstellt, unter einem anderen Namen gespeichert oder "nur" geöffnet wurde.