【VBA】zip内のファイル一覧を展開せずに取得する

VBA
この記事は約2分で読めます。

VBAでzip圧縮ファイル内のファイル一覧を取得する場合、下記の手順を踏めば取得することができます。

  1. zipファイルを展開
  2. 展開したフォルダ内のファイル一覧を取得
  3. 展開したフォルダが不要であれば削除

ただ、zipファイルの内容一覧を取得したいだけのときは、圧縮ファイルの展開処理と展開したフォルダの削除が面倒です。

WindowsのShell32.dllライブラリを使用するとzipファイルを展開せずに、ファイルの一覧を取得することができます。

zip内のファイル一覧を取得するコード

読み取り対象のzipファイルの内容

下記のようなTestZip.zipを用意し「C:\vba-zip-test」に置きました。

zip内にファイルとフォルダが圧縮されているので、フォルダ内のファイルも読み取りつつ
text1.txtからtext5.txtまでの一覧をイミディエイトウィンドウに表示してみます。

zipファイルの内容を一覧表示するコード

下記のコードはzipファイルの内容を展開せずに、ファイル一覧を表示するコードです。
事前に参照設定で「Microsoft Shell Controls And Automation」を選択しておく必要があります。

 

TestGetFilesInZip()を実行すると「C:\vba-zip-test\TestZip.zip」のzipファイルを読み込み
zipファイル内のファイル一覧が表示されます。

 

コメント