Shell-Aufruf funktioniert nicht korrekt

30/11/2007 - 12:09 von SpEzIaLApparat | Report spam
Hallo zusammen

ich versuche mit VBA ein Programm aufzurufen, und dem auch noch
variable Parameter mitzugeben.

Hier mein Code:

strVerzeichnis = "\\server\share\ordner"
DHCPSrv = "192.168.0.1"

For Each ws In Worksheets
If ws.Name <> "Index" Then
Shell ("netsh.exe dhcp server " & DHCPSrv & " scope " &
ws.Name & " dump > " & strVerzeichnis & "\" & ws.Name)
End If
Next ws

Zur Erklàrung:

Ich möchte damit einen Dump von bestimmten DHCP-Scopes machen, um
diese spàter mit Excel zu analysieren.

Mein Problem ist, das er zwar netsh.exe aufruft, aber den Dump nicht
speichert. Ich vermute es liegt an den Variablen, die ich dem String
mitgebe, denn manuellen Aufruf ohne Variablen funktioniert dies
tadellos.

Hat einer ne Idee?

Viele Grüße

Andreas Frey
 

Lesen sie die antworten

#1 Bernd Strohhaecker
30/11/2007 - 15:26 | Warnen spam
Hi Andreas,

die Ein-/Ausgabeumleitung wird normalerweise in einer Shell realisiert,
nicht in einer Kommandozeilen-Applikation. D.h. das ">" funktioniert
hier nicht.

a) baue einen "cmd.exe /c " davor
b) nimm WScript.Shell und lies die Standardausgabe via StdOut.ReadAll,
siehe Ping-Beispiel.

cu, Bernd
Option Explicit

Function GetPingAnswer(Adr As String) As String
Dim objShell As Object, objExec As Object
Dim strPingResults As String

Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping " & Adr)
GetPingAnswer = objExec.StdOut.ReadAll
Set objExec = Nothing
Set objShell = Nothing
End Function

Sub x()
Debug.Print GetPingAnswer("localhost")
End Sub

Ähnliche fragen