Excel VBAメモ zip形式の圧縮ファイルを展開してみる

VBA

Excelにもオブジェクトの挿入で圧縮ファイルを保存しとくことができる。
1つのファイルで取り扱うことができて便利だけど、圧縮ファイルを展開するために外部のアプリケーションを使うようにすると不便。
なんとか、VBAだけで圧縮ファイルを展開できんもんかと調べてたら…Windowsのシェルを使う方法でなんとかなるんだね…。
※ちなみに圧縮するときの記事はここ 2018/12/05追記

ポイントはこんな感じ。

  • CreateObject()でShell.Applicationオブジェクトを作成する
  • Shell.Application.Namespace().Itemsでzipファイルの中にあるファイル情報を取得する
  • Shell.Application.Namespace().CopyHereで指定した場所にファイルをコピーする
    ※要するにコピペする

んで、コード。

' 変数の定義
Dim shell As Object
Dim copyto As String
Dim copyfrom As String
' 変数を初期化
copyfrom = "C:\Users\tetsuyanbo\Desktop\Sample.zip"
copyto = "C:\Users\tetsuyanbo\Desktop\Output"
Set shell = CreateObject("Shell.Application")
' zipファイルに入っているファイルを指定したフォルダーにコピーする
shell.Namespace((copyto)).CopyHere shell.Namespace((copyfrom)).Items
' オブジェクトを破棄する
If Not shell Is Nothing Then
    Set shell = Nothing
End If

準備した圧縮ファイルはこんな内容。

んで、実行してみるとこんな感じ。
ちゃんと指定したフォルダーに圧縮ファイルの中にあったファイルがコピーされとる。

ちなみに、コードはフォルダーがあるかどうかとか同じファイルがすでにあるとかはチェックしていないので注意。

んまま、明日への自分へのメモってことで。