Excel VBAメモ zip形式の圧縮ファイルを展開してみる
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
準備した圧縮ファイルはこんな内容。
んで、実行してみるとこんな感じ。
ちゃんと指定したフォルダーに圧縮ファイルの中にあったファイルがコピーされとる。
ちなみに、コードはフォルダーがあるかどうかとか同じファイルがすでにあるとかはチェックしていないので注意。
んまま、明日への自分へのメモってことで。
ディスカッション
コメント一覧
まだ、コメントがありません