Mcgillivray, Don [ITS]
donald.a.Mcgillivray at mail.sprint.com
Wed Mar 9 11:41:03 CST 2005
Hello, All
In my app I'm archiving text files via VBA using the Winzip command line
and the ShellWait function I got from Dev Ashish's web site. It works
well, but I need to be able to validate that the zip succeeds before
moving on to the next step in my code. I've been experimenting with a
sample I found that uses the Windows Script Host. Passing my Winzip
command line string to it causes the process to hang. (The same string
passed to ShellWait works in a flash.) I tried it using a command line
string for "Blat" to send a test email, and that worked as expected - no
hang. A code sample is below. Am I overlooking something? Has anybody
a better solution for this requirement?
Thanks!
Don
Function GetErrorLevel()
Dim wsShell As Object, Proc As Object, strCommand As String,
strErrLevel As String
Dim strZipFileName As String, strTargetFile as String, strWinzipPath
as String
strWinzipPath = "C:\Archive\Winzip\WZZIP"
strZipFileName = "C:\Archive\TestZipFile.zip"
strTargetFile = "C:\Data\DM02TEST.txt"
strCommand = strWinzipPath & " -a " & """" & strZipFileName & """" &
" " & """" & strTargetFile & """"
'Testing command line using ShellWait
'ShellWait strCommand, vbHide
Set wsShell = CreateObject("wscript.shell")
Set Proc = wsShell.Exec(strCommand)
Do While Proc.Status = 0
DoEvents 'Yields execution so that the operating system can process
other events
Loop
'Use proc.ExitCode to check for returned %errorlevel%
strErrLevel = "StdOut=" & Proc.StdOut.ReadAll()
strErrLevel = strErrLevel & Chr(13) & Chr(10) & "ExitCode=" &
Proc.ExitCode
MsgBox (strErrLevel)
Set wsShell = Nothing
Set Proc = Nothing
End Function