Use o seguinte código: Sub Zip_File_Or_Files()
Dim strDate As String, DefPath As String, sFName As String
Dim oApp As Object, iCtr As Long, I As Integer
Dim FName, vArr, FileNameZip
DefPath = Application.DefaultFilePath
If Right(DefPath, 1) <> "\" Then
DefPath = DefPath & "\"
End If
strDate = Format(Now, " dd-mmm-yy h-mm-ss")
FileNameZip = DefPath & "MyFilesZip " & strDate & ".zip"
'Selecionar o arquivo(s), use o Ctrl para selecionar mais de 1 arquivo
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xls), *.xls", _
MultiSelect:=True, Title:="Selecione os arquivos a serem zipados")
If IsArray(FName) = False Then
'Não faz nada
Else
'Criar um arquivo Zip do Windows vazio
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
I = 0
For iCtr = LBound(FName) To UBound(FName)
vArr = Split97(FName(iCtr), "\")
sFName = vArr(UBound(vArr))
If bIsBookOpen(sFName) Then
MsgBox "Você não pode zipar um documento aberto!" & vbLf & _
"Favor fechar o arquivo e tente novamente: " & FName(iCtr)
Else
'Copiar o documento para o diretório zipado
I = I + 1
oApp.NameSpace(FileNameZip).CopyHere (FName(iCtr))
End If
Next iCtr
'Manter o código aguardando até acabar de zipar
On Error Resume Next
Do Until oApp.NameSpace(FileNameZip).items.Count = I
Application.Wait (Now + TimeValue("0:00:01"))
Loop
MsgBox "Você encontrará o arquivo zipado aqui: " & FileNameZip
On Error GoTo 0
Set oApp = Nothing
End If
End Sub Atenciosamente, Vagner Nicolodi