• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDFファイル毎にパスワード付きZIP化するマクロ)

PDFファイルをパスワード付きZIP化するマクロ

このQ&Aのポイント
  • Excelマクロを使用して、複数のPDFファイルをパスワード付きZIPファイルに圧縮する方法を教えてください。
  • Windows10(64bit)の環境でExcel 2016を使用しています。指定したフォルダに保存された複数のPDFファイルを一覧化したExcelブックの情報を元に、それぞれのPDFファイルに異なるパスワードを付けてZIPファイルにする処理を自動化したいです。
  • コードをご教示いただければ幸いです。圧縮ソフトは7-Zipを使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8477/18146)
回答No.3

とりあえず https://sevenzip.osdn.jp/download.html から7-Zip Extra: コマンドラインバージョンをダウンロードしてきて7za.exeをどこかに置きます。 ファイルが一覧化されたExcelブックにマクロを追加します。 その後 Sub test() Set fp = Worksheets("一覧").Range("a2") '場所が違っていたら適当に変更 Do While Not (IsEmpty(fp)) pw = fp.Offset(, 2).Text SrcPath = fp.Text pos = InStrRev(SrcPath, ".") If pos > 0 Then DestPath = Left(SrcPath, pos - 1) & ".zip" Else DestPath = SrcPath & ".zip" End If com = """C:\Program Files\7-Zip\7za"" a -p" '7zaのパスは適当に変更 com = com & pw & " """ & DestPath & """ """ & SrcPath & """" CreateObject("WScript.Shell").Run com, 1, True Set fp = fp.Offset(1) Loop End Sub

sgskrm
質問者

お礼

ありがとうございます! 早速試してみたところ、求めていた通りの動きになりました。最初は7-Zipのコマンドラインバージョンの配置場所がよくわからずエラーになったのですが、元の通常の7-Zipのプログラムファイルと同じフォルダに配置したら動きました。 大変助かりました。

その他の回答 (2)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.2

Win7以降では OSだけでは圧縮できないので、他の圧縮ツールと組み合わせる方法が紹介されています。 下記の URLは VBAから Lhaplusを使って ZIP圧縮を行う方法です。 https://gist.github.com/tanakamisaki/6be7b5b4b51642d61beb08b4e75a34ca

  • f272
  • ベストアンサー率46% (8477/18146)
回答No.1

zipしたファイルはどのフォルダに入れたいの? zipしたファイルの名前はどうしたいの?

sgskrm
質問者

補足

ありがとうございます。 ZIP化したファイルは元のPDFと同一フォルダ内(C:\work\files)に保存したいです。 また、ファイル名は元のPDFファイルと同名(”.pdf”→”.zip”)で保存したいです。元のPDFは保持してもしなくても、どちらでも構いません。

関連するQ&A