1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Sub AddToZIPFold(strZipFile As String, strSceFile As String)
Dim oSh As shell32.Shell
Dim oZipFold As shell32.Folder
Dim oSceFold As shell32.Folder
Dim oFoldItm As shell32.ShellFolderItem
Dim strSceFold As String, strSceFileN As String
Dim arrBytes() As Variant, i As Integer, fh As Integer
Dim posDP As Integer, posAS As String
posAS = InStrRev(strSceFile, "\")
posDP = InStr(1, strSceFile, ":")
If posAS > 1 Then
strSceFileN = Mid(strSceFile, posAS + 1, Len(strSceFile) - posAS)
strSceFold = Left(strSceFile, posAS - 1)
ElseIf posDP > 1 Then
strSceFileN = Mid(strSceFile, posDP + 1, Len(strSceFile) - posDP)
strSceFold = Left(strSceFile, posDP)
Else
Exit Sub
End If
arrBytes() = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
' Si le fichier zip n'existe pas on en crée un vide
If Dir(strZipFile) = "" Then
fh = FreeFile()
Open strZipFile For Binary As #fh Len = 1
For i = LBound(arrBytes) To UBound(arrBytes)
Put #fh, , CByte(arrBytes(i))
Next
Close #fh
End If
Set oSh = New shell32.Shell
Set oZipFold = oSh.NameSpace(strZipFile)
Set oSceFold = oSh.NameSpace(strSceFold)
Set oFoldItm = oSceFold.Items.Item(strSceFileN)
oZipFold.CopyHere oFoldItm
Set oFoldItm = Nothing
Set oSceFold = Nothing
Set oZipFold = Nothing
Set oSh = Nothing
End Sub
End Sub |
Partager