*.py aus VBA öffnen mit "Warten"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Lulu82
User
Beiträge: 2
Registriert: Mittwoch 24. September 2008, 10:15

*.py aus VBA öffnen mit "Warten"

Beitragvon Lulu82 » Mittwoch 24. September 2008, 10:21

Hallo Freunde des Python :)

ich habe (für mich) ein mittelgroßes Problem. Ich schreibe zur Zeit meine Diplomarbeit und nutze Python. Als grafische Benutzeroberfläche habe ich MS Excel. Nun möchte ich Python-Scripte aus dem Excel aufrufen. Ich möchte sie aber nicht "nur" aufrufen, sondern ich möchte, dass VBA wartet, bis das Script beendet ist und dann weiter macht.

Nun habe ich mich mit VBA informiert, wie sowas geht, da habe ich unter anderem das rausgefunden:

Dim lngRC As Long
lngRC = CreateObject("WScript.Shell").Run("C:\Python24\python.exe datei.py", , True) 'True für Warten

Das ist im Prinzip also der Code, mit dem ich das starten könnte und anschließend wird mein VBA-Script weiter ausgeführt.

Das Problem: Das Python-Script wird "irgendwie" nicht richtig ausgeführt. Der rasselt da alle Ausgaben durch das Ausgabe-Fenster, Warte-Schleifen werden einfach übersprungen, alles das ist alles sehr merkwürdig.

Ich bin gerade am verzweifeln und mit hängt natürlich die Zeit im Nacken. Dachte nicht, dass das ein Problem darstellt.

Frage an euch: Wisst ihr da eine Lösung, eine Workaround oder eine sonstige Alternative?

Vielen Danke schon mal!!!
BlackJack

Beitragvon BlackJack » Mittwoch 24. September 2008, 10:33

Ich tippe mal darauf, das "Warte-Schleifen" nicht wirklich übersprungen werden sondern das ein Fehler auftritt und Du halt nur ganz kurz den Traceback siehst bevor das Fenster zu geht. Was es zu recht tut, denn an der Stelle ist das Python-Programm ja beendet.

Bist Du sicher, dass das Python-Programm funktioniert? Auch unabhängig vom aktuellen Arbeitsverzeichnis?
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Beitragvon Lonestar » Mittwoch 24. September 2008, 10:38

Hi,
vermute das gleiche wie BlackJack - versuche doch einfach das Python-Script über den DOS- Prompt per Hand Aufzurufen. Dann kannst du dir auch den Traceback ansehen.
Lulu82
User
Beiträge: 2
Registriert: Mittwoch 24. September 2008, 10:15

Beitragvon Lulu82 » Mittwoch 24. September 2008, 11:12

Das Problem ist ja komischweise, dass wenn ich direkt den auszuführenden Pfad (C:\Python24\python.exe datei.py) in die kommandozeile schreibe und ausführe, dass dann alles funktioniert, das wundert mich eben so stark.

Ich habe nur eben bemerkt, dass, so wie es aussieht, dieses Phänomen nur bei der einen Datei auftritt. Zur Zeit bin ich an einer anderen Datei dran, ich werd das dort erst einmal versuchen. Ich habe nämlich den Verdacht, dass das an irgendwelchen Services liegt, die ich zusätzlich rein lade.

Zum Hintergrund: Ich entwickle eine Testautomatisierung für BMW. Und dort lädt man sogenannte Services rein, wo man z.B. von Python aus Zugriff auf Excel oder diverse andere Programme hat.

Also grundsätzlich meint ihr, gibts da keine Problem mit der Ausführung? Ich werde wohl mal noch weiter suchen müssen!
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 24. September 2008, 14:29

Ich hasse zwar VBA wie die Pest, allerdings erscheint es mir nich allzu sinnvoll aus einem VBA-Programm ein Python-Programm aufzurufen, dass dann wiederum auf Excelquellen zugreifen muss.
Ich denke das geht mit VBA geschickter, wurde ja schliesslich auch von M$ verbrochen.

Richtig helfen kann man dir allerdings nur mit einem Traceback oder Debugging Ausgaben, pfriemel da mal ein paar sinnvolle `print's rein, dass du auf diese Weise an Infos kommt.

Kann es vielleicht sein, dass der Shell-Aufruf aus deinem VBA-Skript Tracebacks verschluckt? Wenn ja, dann schau mal ob du da nicht irgendwie rankommst.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder