Microsoft Excel

Herbers Excel/VBA-Archiv

Ausführen von exe-Datei liefert anderes Ergebnis

Betrifft: Ausführen von exe-Datei liefert anderes Ergebnis von: Dirk
Geschrieben am: 07.09.2004 14:28:03

Hallo,
ich habe mit vielen Tipps und Hilfen dieser HP mein Programm soweit am Laufen.
Dabei führe ich eine exe-Datei aus, die eine zuvor gespeicherte CSV-Datei benutzt und nach der Ausführung eine neue CSV-Datei erstellt.

Mein Programm-Code bis hierhin:

Application.Wait (Now + TimeValue("0:00:01"))

Application.DisplayAlerts = False
ChDir "H:\Verchromungsdatenbank\Daten"
ActiveWorkbook.SaveAs Filename:="C:\Test\daten\liste.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False
Application.DisplayAlerts = True

Application.Wait (Now + TimeValue("0:00:01"))

Dim strDeinProgramm As String
strDeinProgramm = "C:\Test\Programm.exe"
ChDir "C:\Test"
Call Shell(Environ("COMSPEC") & " /C " & strDeinProgramm, vbHide)

Application.Wait (Now + TimeValue("0:00:01"))

Leider beinhaltet die von der exe-Datei erstellte csv-Datei nur gähnende Leere.
Wenn ich danach die exe-Datei von Hand aus dem Explorer starte und auch die zuvor erstellte liste.csv benutze, dann erstellt das Programm eine csv-Datei mit gewünschtem Inhalt !!!
Das klappt also nur nicht, wenn ich mein VB-Programm ausführe.
Hab ich nen Fehler im Quelltext ?

Ich hab mittlerweile viel auspobiert, komme aber als Anfänger nicht mehr weiter.
Z.B. wurde die exe-Datei ohne die Zeile "ChDir "C:\Test"" nicht ausgeführt, weil Daten, die das exe-Programm braucht nicht gefunden wurde.
Liegt vielleicht da noch mein Fehler ?

Über Eure Hilfe würde ich mich freuen.

Vielen Dank und Grüße von der Mosel
Dirk

  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebnis von: Axel
Geschrieben am: 07.09.2004 15:24:27

Hallo Dirk,

bist du sicher, dass die Exe-Datei auch wirklich ausgeführt wird. Bei deiner Konstruktion wird kein Fehler erzeugt, falls der Interpreter das Programm nicht findet.

Teste doch mal den einfachen Weg:

Call Shell(strDeinProgramm)

oder muss das unbedingt über cmd.exe laufen?

Gruß
Axel


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebnis von: Dirk
Geschrieben am: 07.09.2004 15:42:19

Hallo Axel,

vielen Dank für Deine Hilfe !!!
Das klappt auch mit Deiner Idee, jedoch wird die Datei immernoch nicht korrekt ausgeführt.
Die csv-Datei bleibt leer.
Ich verstehe das einfach nicht !!!

Nochmals Danke.
Gruß
Dirk


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebnis von: Axel
Geschrieben am: 07.09.2004 16:44:05

Ruhig Blut!

Vielleicht solltest du mir zusätzlich einige Infos geben, da ich an den offensichtlich bereits vorher gelaufenen Threads zum Thema nicht beteiligt war.

Wenn ich das richtig verstehe, liest das Exe-Programm die innerhalb des VBA-Code erstellte Datei "liste.csv" und erzeugt eine neue CSV-Datei, richtig?

Wofür sollen denn die ganzen sleep(1) (Application.Wait()) gut sein? Den letzten kann ich ja noch verstehen, da Shell() das auszuführende Programm asychron startet. Allerdings wäre da eine explizite Prüfung auf Terminierung des Programm sinnvoller, als pauschal eine bestimme Zeit zu warten. Aber das ist ja jetzt nicht das Problem.

Nochmal konkret die Frage: Bist du sicher, dass das exe-Programm korrekt ausgeführt wird? Gibt es da ein Protokoll, Debug-Informationen oder ähnliches?

Gruß
Axel


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebn von: Dirk
Geschrieben am: 07.09.2004 17:23:22

Hi Volker,

Danke für Deine Antwort.
Zu Deinen Fragen:

Vorher noch: hab da zwei unterschiedliche ChDir drin. Die sind aber gleich. hab nur versäumt die anzuändern.


'ChDir "C:\Test\Daten"'
'ActiveWorkbook.SaveAs Filename:="C:\Test\daten\liste.csv"'

Zum Thema:
Also, ein Informatiker hat ein Programm geschrieben, wozu ich eine Oberfläche für Maschinenbediener machen soll. Ich hab sowas aber noch nicht gemacht und versuche mich eben hier.
Das Programm funktioniert ohne meine Anwendung einwandfrei.

Mittlerweile speichert die Anwendung auch die csv-Datei ohne Probleme.
Die kann das Programm auch verarbeiten wenn ich es im Explorer ausführe.
Danach stimmt auch die auszugebende Datei. also: Programm funktioniert

Wenn ich jetzt das Programm mit meiner Anwendung ausführe, sehe ich auch, wie das Programm ausgeführt wird. Aber Gespeichert wird nur eine csv-Datei, bei der die berechneten Werte fehlen, aber die Achsenbeschriftung erstellt wurde.
also: irgendwas stimmt nicht

Aus diesem Grund hab ich auch die Pausen hineingesetzt, weil ich gedacht habe, dass das
Programm vielleicht nicht so schnell ist.
Hat aber auch nichts gebracht.

Hoffe ich konnte mich genug ausdrücken.
Schonmal vielen Dank für Deine Bemühungen.

Viele Grüße
Dirk


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebn von: Axel
Geschrieben am: 07.09.2004 17:51:37

Hallo Dirk,

genauso habe ich das auch verstanden und interpretiert.

Das exe-Programm arbeitet also beim Aufruf aus Excel anders (besser gesagt falsch) als beim Aufruf über den Explorer.

Offensichtlich gibt es aber keine Protokolldatei oder die Möglichkeit das exe-Programm mit Debugging-Infos laufen zu lassen. Wir stochern also im Dunkeln. Parameter werden keine übergeben und der Pfad ist sicherlich auch richtig, gell? Der Quellcode liegt natürlich nicht vor.

Fehlen vielleicht irgendwelche Umgebungsvariablen? Sollten eigentlich nicht.

Ich fürchte da kann ich dann auch nicht mehr helfen.

Sorry
Axel


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebn von: Dirk
Geschrieben am: 08.09.2004 08:47:17

Hallo Axel,

ich bin jetzt wieder einen Schritt weiter.
Das Programm läuft auf jeden Fall, wenn ich es aus dem Makro öffne.
Aber da scheint ein Problem mit dem speichern der CSV-Datei zu sein.

Application.DisplayAlerts = False
ChDir "c:\Test\Daten"
ActiveWorkbook.SaveAs Filename:="C:\Test\Daten\liste.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False
Application.DisplayAlerts = True

ich habe dem Programm verboten, die CSV Datei zu überschreiben.
Nachdem ich mir die Datei angeschaut habe, stand alles in Spalte A mit "," getrennt.
Da könnte der Fehler liegen.
Hast DU da eine Idee ???

Vielen Dank im Voraus.
Gruß
Dirk


  


Betrifft: AW: Ausführen von exe-Datei liefert anderes Ergebn von: Dirk
Geschrieben am: 08.09.2004 12:33:40

Hi Axel,

ich habs.
Das Problem lag tatsächlich am Speichern der CSV-Datei.

ActiveWorkbook.SaveAs Filename:="C:\Test\Daten\liste.csv", FileFormat:=xlCSV, local:=True

Local:=True

übernimmt den "europäischen" ;-) Part und trennt mit Semikolons

Vorher waren die Semikolons nur Kommas.
Da war der Fehler begraben !!!!

Also nochmal vielen Dank !!!

Viele Grüße
Dirk


 

Beiträge aus den Excel-Beispielen zum Thema "Ausführen von exe-Datei liefert anderes Ergebnis"