|こんにちは、すごい改善のAitoです。本日の話題はPDFとパスワードについてです。それぞれ単体では仕事でもプライベートでもよく使うことでしょう。組み合わせるとなると......特にWindowsデフォルト環境下においてはちょっとどころではなく困りものです。今回はPDFファイルにパスワードを付けたいという課題について考えていきましょう。デフォルト環境では対応しきれない部分も多いため、フリーソフトを使ったら便利ですね。暗号に関わる部分は非専門家が自分で書くのは逆に危険なので信頼のおけるソフトの利用を強くおすすめします。パスワード付きZIP化そもそもなぜパスワード付きPDFが必要なのでしょう。パスワードが重要で、アクセス権を持った人だけが見ることができれば形式は何でもよいという方は多い気がします。それならばパスワード付きZIPでもいいのでは......?ということでExcelからパスワード付きZIPを作成する方法を解説していきます。・7-Zip言わずと知れた老舗アーカイバです。様々な形式に対応していますし、速いです。7-ZipをVBAからコマンドラインで呼び出して使用する方法を検討しましょう。こんな場合を考えてみます。A列にZIP化したいファイルの名前が入っており、B列にそのファイルをZIP化した際にかけるパスワードが入っています。すべてのファイルに対してパスワード付きZIPを作成したいケースを考えます。7-Zipの呼び出しコマンドは次のように仕様が定められています。[ZIP化したいファイル名]従来の方式では暗号化しても容易に解読ができてしまうため、より強固なAES-256形式での暗号化をおすすめします。コマンドをVBAから呼び出して使うことにしましょう。自動化とCLIは相性が良いですね。コーディングするとこのようになります。Functionちょこっとだけ解説すると、WScriptというものを使ってコマンドプロンプトに実行するファイル(今回は7-Zip)に対するコマンドを投げることができるんです。CreateObject(“WScript.Shell”)がその機能の呼び出しですね。今回はパスワードを付けて圧縮するコマンドを使いました。コマンドの仕様などはこちらをご覧ください。https://7-zip.opensource.jp/howto/dos-command-password.html他にもLhaplusを使う方法もありますので、興味を持たれた方・環境がそちらの方は調べてみてください。ここまで読んで、フリーソフト以外の解決手段はないのか!と思われた方もいらっしゃるでしょう。Vista以降パスワード付きZIPを作る機能が廃止されたんです。デフォルトのままで...となると環境自体をアップデートした方がよいです。ExcelにこだわりがなければPythonなど別の言語を用いて作ることもできます。Adobeの環境が使える場合どうしてもパスワード付きPDFを作らなければならない場合が出てきた時を想定しましょう。Proを契約している場合はアクションウィザードを使ってください。個別にパスワードを設定したいなど細かなカスタマイズをしたい場合は、javascriptを書くことになるため対応できない場合は別の手法を考える必要があります。今回はjavascriptがメインではないので解説は省略します。APIの利用を検討してください。こちらも別言語での実装となるため、わからない場合は後述する方法を検討ください。次はWordを使う方法です。Wordはデフォルトでパスワード付きPDFの出力に対応しています。ExcelからデータをWordに貼り付けて出力すればお目当てのパスワード付きPDFが出来上がるというわけです。こちらはVBAで操作することができないようなので、手動でやる必要があります。ルーティンワーク以外のスポット作業で使ってもよいかもしれません。詳細はこちらをご覧ください。フリーソフトを使う方法お次はExcelからPDFとして出力してその後そのPDFにパスワードを付加する方法について考えてみましょう。フリーソフトを使う方法です。今回はPDF出力がメインではないのでそこまで丁寧に記載しないため、もしPDF出力についてもっと知りたいという方はこちらをご覧ください。https://excel-ubara.com/excelvba1/EXCELVBA439.htmlhttps://tech-paclab.com/exportpdf/事前準備として、pdftkというソフトをダウンロードします。このソフトは昔から使われているものです。インストールするのが嫌だという方はPortable版を調べてみましょう。今回はPortable版で作ってみることにします。https://portableapps.com/apps/office/pdftk_builder_portableここからPortable版をダウンロードして、ダウンロードされたexeファイルを実行して解凍します。インストール先とか出てきますが、気にせずそのまま解凍してください。こんな感じになりますかね。Excelファイルはこんなのを用意してみました。PDFの出力範囲はこんな感じにしました。PDF出力してパスワード付加するところまで作っていきましょうか。VBAはこのように書けます。ここでもWScript.Shellが登場していますね。Sub出力されたファイルを開こうとするとパスワードを求められます。上手くパスワード付加できていますね!1234と入力すると開きます。まとめ以上、Excelをパスワード付きPDFにする手法についてざっくりと解説しました。PDFは専用のソフトウェアを使って処理することが望ましいです。おすすめは2.3のフリーソフトを使う方法です。悩んでいる方がいらっしゃったら参考になれば幸いです。別の記事でお会いしましょう!最後まで読んでいただきありがとうございました。