This is how I am creating ZIp Files


Public Function ZipFile(ByVal SourceFilepath As String, ByVal DestFileName As String) As Long
On Error GoTo ErrRoutine
' Shells a new process and waits for it to complete.
' Calling application is responsive while new process
' executes. It will react to new events, though execution
' of the current thread will not continue.
'
Dim ProcessID As Long
Dim hProcess As Long
Dim nRet As Long
Const fdwAccess = PROCESS_QUERY_INFORMATION
Dim TempFile As String: TempFile = g_ReportDirectroy & "\temp.zip"
Dim FileObj As New FileSystemObject
If Not FileObj.FolderExists(g_ReportDirectroy) Then
FileObj.CreateFolder g_ReportDirectroy
Else
If FileObj.FileExists(TempFile) Then
FileObj.DeleteFile TempFile, True
End If
End If
On Error Resume Next
ProcessID = Shell(GetShortPath(App.Path & "\utilities\pkzip") & " " & GetShortPath(TempFile) & " " & GetShortPath(SourceFilepath & DestFileName & ".pdf"), vbHide)
If Err Then
Err.Raise vbObjectError + Err.Number, "ZipFile", "Unable to execute Zip Utility"
Exit Function
End If
On Error GoTo 0
hProcess = OpenProcess(fdwAccess, False, ProcessID)
Do
GetExitCodeProcess hProcess, nRet
DoEvents
Sleep 200
Loop While nRet = STILL_ACTIVE
Call CloseHandle(hProcess)
FileObj.CopyFile TempFile, g_ReportDirectroy & "\" & DestFileName & ".zip"
FileObj.DeleteFile TempFile
ZipFile = nRet
Exit Function
End Function


The API's and Constants I used was

Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STILL_ACTIVE = &H103
Const MAX_COMPUTERNAME_LENGTH As Long = 15&


I have used some global variable But you can replace it with some values.

Please check this works for you

Ramdas