説明:
ZIP32J.DLL」をVBAから呼び出して、ファイルをZIP形式に圧縮する方法です。
あらかじめ、「ZIP32J.DLL」と「zip32.dll」をセットアップする必要があります。
http://www.csdinc.co.jp/archiver/lib/zip32j.html

※うまくダウンロードできない場合は、
http://backborn.com/downloads/zip32jdll.zip
をご利用ください。(こちらの方が簡単です。)

サンプルプロシージャ:
標準モジュールに記述します。

Private Declare Function zip Lib "Zip32j.dll" Alias "Zip" ( _
  ByVal lhWnd As Long, _
  ByVal szCmdLine As String, _
  ByVal szOutPut As String, _
  ByVal wSize As Long _
) As Long


サンプルプロシージャ:
標準モジュールに記述します。

Function bbZip(strZipIn As String, strZipOut As String, strOption As String)

  Dim Command As String
  Dim RC As Long
  Dim hWnd As Long
  Dim OutPut As String
  Dim Size As Long

  Command = strOption & """" & strZipOut & """" & " " & """" & strZipIn & """"

  Size = Len(OutPut)

  RC = zip(hWnd, Command, OutPut, Size)

  Beep

End Function


使用例:
「bbZip」プロシージャは、次のようにして実行することができます。
この例では、「C:\test.mdb」ファイルを「C:\test.zip」に圧縮しています。

  bbZip "C:\test.mdb", "C:\test.zip", "-r "

コマンドラインのスイッチ(strOption)に関する補足:
「ZIP32J.DLL」にはさまざまなコマンドラインのスイッチが用意されています。
上記サンプルで使っている"-r "は再帰的検索して圧縮する命令です。
つまりサブフォルダ下のファイルもまとめて圧縮することができます。
たとえば「C:\tmp\」の下にあるすべてのMDBファイル「*.mdb」を「C:\test.zip」 に圧縮したい場合は、次のように指定します。

  bbZip "C:\tmp\*.mdb", "C:\test.zip", "-r "

"-q "を指定すると、処理中の展開状況ダイアログの表示を抑止することができます。
"-e "を指定すると、パスワード付き圧縮をします。
"--sfx "を指定すると、自己解凍書庫(.exe)を作成します。

但し、自己解凍書庫を作成する場合は、「sfx32gui.dat」をセットアップする必要があります。
http://www.csdinc.co.jp/archiver/lib/sfx32gui.html

※コマンドラインのスイッチ後ろに半角スペースが含まれています。

複数のコマンドラインを指定する場合は、半角スペースで区切ります。

  bbZip "C:\tmp\*.mdb", "C:\test.zip", "-r -q -e "

その他コマンドラインのスイッチの詳細は「ZIP32J.DLL」のアーカイブに同梱されている「CMD_ZIP.TXT」を参考にすることができます。

関連ページ:
#013 ファイルを圧縮する方法(lzh形式)