=============
実現したいこと
=============
既存のZIPファイルに任意のパスワードを設定することです
現時点で、以下の二つのことは実現できているのですが、既存のZIPにパスワードを付加する機能を実装したいので方法をご教授ください
恐らく、WinZipのコマンドラインで何かできそうな気がするのですが発見できませんでした。
なお、制約条件は、圧縮ソフトを使う場合にはWinZipを使うことです
=============
現時点で実装できていること
=============
方法1
Scripting.FileSystemObjectのオブジェクトを利用して空のZIPファイルを作成し、Shell.ApplicationのオブジェクトのNamespace.CopyHereで圧縮したいファイルを追加していくこと(パスワードはなし)
方法2
WinZIPのコマンドラインをShellで起動して、ひとつづパスワード付の圧縮ファイルを追加していく方法
Shell ("C:\Program Files\WinZip\WINZIP64.EXE -min -a -s" & Password & " " & Target & " " & Source)
=============
実現したい理由
=============
なぜ既存のZIPファイルにパスワードをかける方法がほしいかというと
方法1ではフォルダ構造を保ちながらフォルダ毎圧縮できるのですが、方法2ではターゲットにフォルダを指定してもフォルダ内のファイルをひとつづつパスワードをつけて圧縮してしまいます。またフォルダが入れ子になっている場合には無視されます。それにこの方法の場合、いくつかフォルダを指定して一つの圧縮ファイルに詰め込む場合、仮にフォルダ内にたまたま同一名称のファイルがあると圧縮過程で上書きされてしまいます。なお、方法1では、フォルダ構造を維持したまま圧縮できます。そのため、方法1で作成した圧縮ファイル(パスワード無)に後からパスワードが付加できると嬉しいと思ったのです。
英語のサイトなど調べたのですがうまく見つかりませんでした
ご教授どうぞよろしくお願いいたします
↓
papinianus様のアドバイスにより
Shell ("C:\Program Files\WinZip\WINZIP64.EXE -min -a -r -s" & Password & " " & Target & " " & Source)とすることで解決しましたが、以下のようなエラーメッセージが出るようになりました。なお、圧縮時の作業を待つためのWindowsのAPIを利用しています。
圧縮ファイル自体は正しく作成されているので問題はないように見えるのですが、エラーメッセージが出ないほうがきれいなので気になります。
よろしくお願いします。
Action: Add (and replace) files
Include subfolders: yes
Save full path: no
Adding 02POWER WORD.pptx
Adding 03POWER WORD.pptx
Adding Bkup
Adding Bkup\SecurePDFFiles from PPT_01.xlsmThe following file is open by another program. If that program
writes to the file while WinZip is zipping the file, the zipped
file may be corrupt: "P:\My Documents\Macro\パワポのPDF化\SecurePDFFiles from PPT_04.xlsm".
Adding 結果
Total bytes=98371650, Compressed=24560041 -> 75 percent savings.

回答1件
あなたの回答
tips
プレビュー