Forum: PC-Programmierung VB Shell EXE - Output Return


von HSW_80 (Gast)


Lesenswert?

Hallo Alle,

ich bin nicht ein Expert für VB, deswegen bitte ich Eure Hilfe.

Von eine Excel-Sheet (durch vb) rufe ich ein EXE (Hex_Rechner.exe).
Diese Exe nimmt einen Hex Wert ein (zB 0x6110) und gibt raus einen 
anderen Hex-Wert (0x6117).

Das Shell'ing von EXE läuft gut, aber schließt die Fenster schnell aus. 
Trotzdem sehe ich den Wert 0x6117 für kurzes Augenblick. D.h. alles i.O.

Wenn ich retVal von Shell benutze, kriege ich leider nur Process-ID, 
aber nicht den Output Wert 0x6117.


Meine Frage: Gibt es eine Kodierungsmöglichkeit, mit dem ich 0x6117 
wieder zurück auf einer Zelle von Excel kriegen könnte???

Shell Command ist nicht gut genug dafür.
Ich habe versucht, auf einm TXT file den Wert zu speichern. Aber kein 
Erfolg!

Ich habe auch gelesen, neue Process zu definieren. Aber habe ich es 
nicht richtig verstanden.

Kann jemand bitte mir helfen????

von Peter II (Gast)


Lesenswert?

Zeige mal den Code vom aufruf.

Das ist der Textdatei, wird vermutlich das einfachste sein. Was ging 
daran nicht?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

HSW_80 schrieb:
> Von eine Excel-Sheet (durch vb) rufe ich ein EXE (Hex_Rechner.exe).

Du weißt, daß das Konvertieren von Zahlen zwischen Dezimal und 
Hexadezimal auch mit Excel- bzw. VBA-Bordmitteln gemacht werden kann? 
Dafür ist es wirklich völlig unnötig, ein anderes Programm aufzurufen.

http://support.microsoft.com/kb/161304/en-us

von Peter II (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Du weißt, daß das Konvertieren von Zahlen zwischen Dezimal und
> Hexadezimal auch mit Excel- bzw. VBA-Bordmitteln gemacht werden kann?
> Dafür ist es wirklich völlig unnötig, ein anderes Programm aufzurufen.

Es ist aber keine Konvertierung:
> (zB 0x6110) und gibt raus einen anderen Hex-Wert (0x6117).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> Es ist aber keine Konvertierung:
>> (zB 0x6110) und gibt raus einen anderen Hex-Wert (0x6117).

Das ist natürlich richtig. Aber auch das Rechnen lässt sich mit 
VBA-Bordmitteln anstellen, was auch immer da für magische Dinge 
angestellt werden mögen.

von HSW_80 (Gast)


Lesenswert?

Hallo Peter,

Danke für die Antwort.
Das Code ist unten. Es ist sehr einfaches Code.

********
Public Sub ShellWithArguments()
Dim Inp_Value As String
Dim retVal As Variant

Inp_Value = "0x6110"
retVal = Shell("C:\Temp\DataCalc.exe  > C:\Temp\Results.TXT" & 
Inp_Value, vbNormalFocus)

End Sub
*********

retVal gives Process ID, während TXT nichts aktualisiert wird, bzw. ein 
Error in dem Console verursachen wird..

Eigentlich würde ich gern die Ergebnis (zB 0x6117) auf einer Cell von 
Excel bringen. Aber es ist noch komplizierter.


@Hallo Rufus,

es geht nicht um Hex-Dec-Bin Konvertierung o.ä.
EXE ist ein App mit I/O's.
Ich gebe ein Wert und nach System-Anforderungen gibt es wieder ein HEX 
Output raus.

von Peter II (Gast)


Lesenswert?

HSW_80 schrieb:
> Inp_Value = "0x6110"
> retVal = Shell("C:\Temp\DataCalc.exe  > C:\Temp\Results.TXT" &
> Inp_Value, vbNormalFocus)

ich würde sagen die Reihenfolge ist falsch und du must noch warten bis 
es auch beendet ist.

Inp_Value = "0x6110"
retVal = Shell("C:\Temp\DataCalc.exe " & Inp_Value & " > 
C:\Temp\Results.TXT", vbNormalFocus, true)

http://msdn.microsoft.com/de-de/library/xe736fyk(v=vs.90).aspx

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.