- ベストアンサー
PDFファイルをパスワード付きZIP化するマクロ
- Excelマクロを使用して、複数のPDFファイルをパスワード付きZIPファイルに圧縮する方法を教えてください。
- Windows10(64bit)の環境でExcel 2016を使用しています。指定したフォルダに保存された複数のPDFファイルを一覧化したExcelブックの情報を元に、それぞれのPDFファイルに異なるパスワードを付けてZIPファイルにする処理を自動化したいです。
- コードをご教示いただければ幸いです。圧縮ソフトは7-Zipを使用しています。
- みんなの回答 (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
その他の回答 (2)
- masnoske
- ベストアンサー率35% (67/190)
Win7以降では OSだけでは圧縮できないので、他の圧縮ツールと組み合わせる方法が紹介されています。 下記の URLは VBAから Lhaplusを使って ZIP圧縮を行う方法です。 https://gist.github.com/tanakamisaki/6be7b5b4b51642d61beb08b4e75a34ca
- f272
- ベストアンサー率46% (8477/18146)
zipしたファイルはどのフォルダに入れたいの? zipしたファイルの名前はどうしたいの?
補足
ありがとうございます。 ZIP化したファイルは元のPDFと同一フォルダ内(C:\work\files)に保存したいです。 また、ファイル名は元のPDFファイルと同名(”.pdf”→”.zip”)で保存したいです。元のPDFは保持してもしなくても、どちらでも構いません。
お礼
ありがとうございます! 早速試してみたところ、求めていた通りの動きになりました。最初は7-Zipのコマンドラインバージョンの配置場所がよくわからずエラーになったのですが、元の通常の7-Zipのプログラムファイルと同じフォルダに配置したら動きました。 大変助かりました。