Hallo
Wie rufe ich unter VBA (Excel) ein anderes Programm auf?
Desgleichen für eine .dll ?
Kann mir da jemand weiterhelfen?
Besten Dank
Hallo
Wie rufe ich unter VBA (Excel) ein anderes Programm auf?
Desgleichen für eine .dll ?
Kann mir da jemand weiterhelfen?
Besten Dank
Hallo,
Wie rufe ich unter VBA (Excel) ein anderes Programm auf?
wie in VB6 auch, sollte in VBA Shell(„Pfad\Programm Parameter“) funktionieren.
Desgleichen für eine .dll ?
Das hängt von der Dll ab.
Beispiel GetAsyncKeyState:
Private Declare Function GetAsyncKeyState Lib „user32“ (ByVal vKey As Long) As Integer
Kann mir da jemand weiterhelfen?
Wenn Du verrätst, welche Dll und was Du möchtest, eventuell.
Gruß Rainer
Hallo Rainer
Erstmal vielen Dank für die prompte Hilfe.
Der Hintergrund ist:
Ich möchte aus VBA heraus über Netcat mit einem Messgerät über TCP/IP sprechen.
Inzwischen bin ich soweit, dass ich auf Konsolenebene mit Netcat das Messgerät zu einer Messung veranlassen kann.
Wermutstropfen: Nach Rückmeldung der Ergebnisse bleibt das Netcat stehen.
Wenn ich aber Netcat aus VBA aufrufe, passiert gar nichts.
Die Netcat Befehle:
Echo Trigger | nc IP-Adresse Port löst eine Messung aus
Echo Testresult | nc IP-Adresse Port schiebt die Ergebnisse rüber.
Haste da ne Idee ?
Geht da vieleicht was über die winsock.dll ?
Gruss
Ratz
Hallo,
Haste da ne Idee ?
ich habe mal nach Netcat gegoogelt:
http://www.jfranken.de/homepages/johannes/vortraege/…
Und auch in ZD-Net noch etwas darüber gefunden. Da steht überall deutlich: Kommandozeile!
Geht da vieleicht was über die winsock.dll ?
Eher nicht. Das ist ausdrücklich für die Kommandozeile geschrieben.
Entweder abreitest Du mit einer Batch-Datei und leitest die Ausgaben in eine Textdatei um, oder Du rufst mit VB eine Konsole auf und arbeitest mit dieser in VB integrierten Konsole dann mit Netcat, weil Du dann auch die Rückmeldungen im VB bekommst.
Ob das aber mit VBA realisierbar ist?
Der Code für VB6:
http://www.activevb.de/tipps/vb6tipps/tipp0342.html
Mit VBA kann ich das nicht testen, ich habe kein VBA.
Gruß Rainer
Hallo Rainer
Danke (* geb)
Entweder abreitest Du mit einer Batch-Datei und leitest die
Ausgaben in eine Textdatei um
Auch mit ner Batch-Datei funzt das (noch) nicht
Der Code für VB6:
Den angegebenen Quellcode habe ich unter VBA zum laufeb gebracht
Aber wie schicke ich jetzt Kommandozeilen zur Ausführung?
Gruss
Ratz
Hallo,
Den angegebenen Quellcode habe ich unter VBA zum laufeb
gebracht
Na wunderbar! Den musst du nur noch ein wenig verändern.
Aber wie schicke ich jetzt Kommandozeilen zur Ausführung?
Dazu sehen wir uns einfach mal die Funktion an und betrachen, was da passiert.
Private Function CreateConsole() As String
Dim szUserInput As String
Call AllocConsole
Call SetConsoleTitle("VB Console")
hConsoleIn = GetStdHandle(STD\_INPUT\_HANDLE)
hConsoleOut = GetStdHandle(STD\_OUTPUT\_HANDLE)
hConsoleErr = GetStdHandle(STD\_ERROR\_HANDLE)
Call SetConsoleTextAttribute(hConsoleOut, FOREGROUND\_RED Or \_
FOREGROUND\_GREEN Or FOREGROUND\_BLUE Or \_
FOREGROUND\_INTENSITY Or BACKGROUND\_BLUE)
Das waren die Vorbereitungen, die Konsole ist nun offen.
Call ConsolePrint("VB Konsole" & vbCrLf)
Call SetConsoleTextAttribute(hConsoleOut, FOREGROUND\_RED Or \_
FOREGROUND\_GREEN Or FOREGROUND\_BLUE)
Call ConsolePrint("Gebe hier Deinen Namen ein: ")
Mit 'Call ConsolePrint(„Auszugegender Text“) wird also ein Text, Befehl, was immer Du willst an die Cosole gesendet. Hier kommt das hin, was Du sonst in der Eingabeaufforderung eintippst.
szUserInput = ConsoleRead()
Hier wird anschließend die Ausgabe der Console gelesen und an eine Variable übergeben.
If Not szUserInput = vbNullString Then
Call ConsolePrint("Hallo, " & szUserInput & "!" & vbCrLf)
Else
Call ConsolePrint("Hallo, wer immer Du auch bist!" & vbCrLf)
End If
Call ConsolePrint("Betaetigen Sie Enter um die " & \_
"VB-Konsole zu schliessen")
Call ConsoleRead
Call FreeConsole
Und hier wird mit ‚Call FreeConsole‘ das Fenster wieder geschlossen.
CreateConsole = szUserInput
End Function
Das nun zu zerlegen, in verschiedenen Prozeduren unterzubringen, so daß man 1.) Die Konsole öffnet. 2.) Etwas in die Konsole schreibt, das Ergebnis empfängt und auswertet. 2.) bis man nicht mehr möchte. 3.) Die Konsole wieder schließt. Ist ja nicht schwer. Oder? Einfach drei Prozeduren, Klickereignisse von drei Buttons.
Gruß Rainer
Danke
Hallo Rainer
Vielen Dank für deine Hilfe.
Ich habs zum laufen gekriegt.
Und zwar mit dem Aufruf Ergebnis = Shell(„cmd /c D:\Magnatest\nc11nt\Messung.bat“)
Gruss
Ratz
Hi Ratz,
Ich habs zum laufen gekriegt.
Und zwar mit dem Aufruf Ergebnis = Shell(„cmd /c
D:\Magnatest\nc11nt\Messung.bat“)
freut mich, daß Dein Problem gelöst ist!
Gruß Rainer