Excelのシートに記述された処理内容でVBAでPDFにパスワード付加するということで、JavaのJSObjectマニュアル漁ったんですがダメでした。JSObjectマニュアルのセキュリティやtrusted署名を付加するあたりのサンプルコードにありそうですが全部英語なので時間がかかりそう)ということで、手っ取り早く VBAのSendKeysでやってみた。この場合、Acrobat StanderdかProが必要
まぁ、とりあえず、ユーザーパスワードをつけることはできたっす。ただ、VBAのSendKeysだと途中でアクティブウィンドウが変わると悲惨な結果になるし、そもそも、セキュリティダイアログの設定が変わっていれば、その時点で破綻するしなぁ。その上、WshShellのAppActivateは、プロセスIDをサポートしてないし、そうなるとバイナリリソースエディタでAcrobatのDialog解析して必要な部分のコントロールID探して、そしてSendMessageなどのWin32API叩いて、となるとこりゃVBAだけでやるのは、骨が折れるわい。
ということで
こんな感じです。
ということで、C#のパッケージ漁るとなんかあるだろう?とググるとありました。(感謝)
ということで、久しぶりに錆ついたVisual Studio 2019を起動して、パッケージ入れて、コマンドラインのPassWord追加のコマンドライン版を上記サイトのソースをサクッと改変して作成。
そしてVBA からはWshShell 経由で動かす、VBAのshell関数は、非同期でやっつけるのでやっぱ、ここは同期したいということで、VBAはセルの情報を1行ごとに拾ってコマンドラインを生成するのを作れば、作成完了。
VBAのSendKeysではタイミング取るのにsleepさせたりと、結構、行き当たりばったりの感じだったのですが、C#のをWshScriptで同期してコールすると、全く無駄がないし、一瞬で作業が終わる、なかなか良かったっす。この場合、Acrobat StanderdかProが不要
もうちょっと熟成させてみて、公開するかも?