I created the following function to take care of it for me. It uses the CreateProcess API to call WinZip:
VB Code:
  1. Public Declare Function CreateProcessA Lib "kernel32" (ByVal _
  2.    lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
  3.    lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
  4.    ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
  5.    ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
  6.    lpStartupInfo As STARTUPINFO, lpProcessInformation As _
  7.    PROCESS_INFORMATION) As Long
  8.  
  9. Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
  10.    hHandle As Long, ByVal dwMilliseconds As Long) As Long
  11.  
  12. Public Const NORMAL_PRIORITY_CLASS = &H20&
  13. Public Type STARTUPINFO
  14.    cb As Long
  15.    lpReserved As String
  16.    lpDesktop As String
  17.    lpTitle As String
  18.    dwX As Long
  19.    dwY As Long
  20.    dwXSize As Long
  21.    dwYSize As Long
  22.    dwXCountChars As Long
  23.    dwYCountChars As Long
  24.    dwFillAttribute As Long
  25.    dwFlags As Long
  26.    wShowWindow As Integer
  27.    cbReserved2 As Integer
  28.    lpReserved2 As Long
  29.    hStdInput As Long
  30.    hStdOutput As Long
  31.    hStdError As Long
  32. End Type
  33.  
  34. Public Type PROCESS_INFORMATION
  35.    hProcess As Long
  36.    hThread As Long
  37.    dwProcessID As Long
  38.    dwThreadID As Long
  39. End Type
  40.  
  41. Public Enum enSW
  42.     SW_HIDE = 0
  43.     SW_NORMAL = 1
  44.     SW_MAXIMIZE = 3
  45.     SW_MINIMIZE = 6
  46. End Enum
  47.  
  48. Public Sub ZipFiles()
  49. On Error GoTo errHandler
  50.     Dim id As Long
  51.     Dim WinZipStr As String
  52.     Dim ZipFile As String
  53.     Dim proc As PROCESS_INFORMATION
  54.     Dim start As STARTUPINFO
  55.     Dim ReturnValue As Integer
  56.    
  57.     ZipFile = CStr(Year(Date))
  58.     ZipFile = ZipFile & CStr(Month(Date))
  59.     ZipFile = ZipFile & CStr(Day(Date))
  60.    
  61.     WinZipStr = "C:\Program Files\WinZip\WinZip32 "
  62.     WinZipStr = WinZipStr & "-a " & InDir & "\Backup\" & ZipFile & ".zip "
  63.     WinZipStr = WinZipStr & InDir & "\*.dat"
  64.    
  65.     start.wShowWindow = enSW.SW_HIDE
  66.        
  67.     ReturnValue = CreateProcessA(0&, WinZipStr, 0&, 0&, 1&, _
  68.        NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
  69.  
  70.     ' Wait for the shelled application to finish:
  71.     Do
  72.        ReturnValue = WaitForSingleObject(proc.hProcess, 0)
  73.        DoEvents
  74.     Loop Until ReturnValue <> 258
  75.    
  76.     Exit Sub
  77. errHandler:
  78.     errCnt = errCnt + 1
  79.     errMsg = errMsg & "<TD>ZipFiles</TD>"
  80.     errMsg = errMsg & "<TD>" & Err.Description & "</TD>"
  81.     errMsg = errMsg & "<TD>" & CStr(Date) & " " & CStr(Time) & "</TD></TR><TR>"
  82.     WriteError (errMsg)
  83. End Sub

InDir is just the path to the files that I want to zip. Check out www.allapi.net for info on the CreateProcess and WaitForSingleObject API call's.