Private Declare Sub Sleep Lib "kernel32" _ (ByVal dwMilliseconds As Long) Sub unZip(ByVal sZipFile As String, ByVal sDir As String, Optional ByVal bFlgDel As Boolean = False) Dim objFileSys As Object Dim objShell As Object Dim objFile As Object Dim objDestination As Object Set objFileSys = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") If isFileExist(sZipFile) = False Then Exit Sub Set objFile = objShell.Namespace(sZipFile) Set objDestination = objShell.Namespace(sDir) objDestination.CopyHere objFile.Items If bFlgDel Then Kill sZipFile End Sub
vZipFile:解凍したいZipファイルのフルパス。
vDestination:解凍先のディレクトリ。
bFlgDel:解凍後、Zipファイルを残すか。デフォルトflase(残す)。
めも
展開先にすでにファイルがある場合は、上書き確認のウインドウが表示されてしまい、自動化できない。
その場合、既存のファイルをリネームするなり、削除するなりする処理を行ったうえで、解凍すればよい。
たぶん、もっとエレガントな回避方法があると思うけど、取り急ぎ無理だったので上記対応。