OVH Cloud OVH Cloud

Fichiers xls zippés avec mot de passe

1 réponse
Avatar
BSH77
Bonjour le forum

Voilà mon probleme, je recois plein de fichiers xls zippés avec meme mot de
passe.
est ce possible avec une macro de tous les dézipper ?
j'ai trouvé la commande pour dézipper un fichier mais je ne sais pas comment
faire avec un fichier zip protégé :
=> Shell (CheminWinZip & "winzip32.exe -e " & NomArchive & " " & DossDest)
merci pour votre aide
bs

1 réponse

Avatar
michdenis
Bonjour BSH77,

Je peux te proposer une "bidouuille de qualité" qui doit être exécuté à partir de l'interface de la feuille de calcul.

Si les fichiers sont déjà dézippés dans le répertoire, la procédure va s'exécuter
en écrasant ceux déja présents sans rien demander !

Ce qui complique un peu la tâche, c'est d'arriver à lui faire dézipper les fichiers
pour la première fois ou les écraser dans message à l'usager dans la même
procédure...Il y a des limites à ce que l'on peut demander à Sendkeys !!!

Malgré la longeur du code, c'est très rapide et tu dois te soucier seulement
de la procédure Test(), celle qui faut lancer !

;-))

Amuse-toi bien !


Dans le haut d'un module standard, déclaration des API
'-------------------------------
'Declare Type for API call:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

' API declarations:

Private Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long

Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long

Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long

' Constant declarations:
Const VK_NUMLOCK = &H90

Const KEYEVENTF_EXTENDEDKEY = &H1
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1
'--------------------------------------------
Private Sub NumLock()
Dim o As OSVERSIONINFO
Dim NumLockState As Boolean
Dim keys(0 To 255) As Byte

o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
GetKeyboardState keys(0)

NumLockState = keys(VK_NUMLOCK)
If NumLockState <> True Then 'Turn capslock on
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(VK_NUMLOCK) = 1
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
End If
Else
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
End If
End Sub

'--------------------------------------------
Sub Dézipper(ByVal NomArchive As String, _
ByVal DossDest As String, ByVal MotDePasse As String)

Shell ("C:Program FilesWinZipwinzip32.exe -e " & NomArchive & " " & DossDest)
DoEvents
SendKeys "~" & MotDePasse
DoEvents
SendKeys "~"
DoEvents
SendKeys "%T%C"
DoEvents
SendKeys "%T"
SendKeys "%"
NumLock
End Sub

'--------------------------------------------
Sub test()
Dim Archive As String
Dim Dest As String
Dim MotPasse As String

Archive = "c:denis.zip"
Dest = "c:TTT"
MotPasse = "denis"

Dézipper Archive, Dest, MotPasse

End Sub
'--------------------------------------------


Salutations!


"BSH77" a écrit dans le message de news:
Bonjour le forum

Voilà mon probleme, je recois plein de fichiers xls zippés avec meme mot de
passe.
est ce possible avec une macro de tous les dézipper ?
j'ai trouvé la commande pour dézipper un fichier mais je ne sais pas comment
faire avec un fichier zip protégé :
=> Shell (CheminWinZip & "winzip32.exe -e " & NomArchive & " " & DossDest)
merci pour votre aide
bs