【VBAリファレンス|実務向け】[VBA自動化の現場で必須!Word文書にパスワードを設定・解除する方法]

スポンサーリンク

なぜVBAでパスワード設定を自動化すべきなのか

業務効率化を進める中で、機密情報を含むWordレポートを自動生成する機会は多いはずです。しかし、VBAでファイルを保存する際、セキュリティ対策を忘れてはいけません。手動で毎回パスワードをかけるのは手間ですし、設定漏れも発生します。今回は、VBAを使ってWord文書に「読み取りパスワード」を自動付与する方法を解説します。

基礎知識:Wordのパスワード保護の仕組み

Wordのパスワード保護には大きく分けて2種類あります。
1. 読み取りパスワード:ファイルを開くために必要なパスワードです。これがないとファイルの中身を閲覧できません。
2. 書き込みパスワード:ファイルを開くことはできますが、編集して上書き保存する際にパスワードが求められます。

今回のVBAコードでは、最も利用頻度が高い「読み取りパスワード」を自動設定する方法をご紹介します。Word VBAでは、DocumentsオブジェクトのSaveAs2メソッドを使用することで、保存時にパスワードを指定できます。

実装・解決策

WordのDocumentオブジェクトには、保存時の引数として「Password」が存在します。これを利用することで、保存ダイアログを操作することなく、コード内から直接パスワードを埋め込むことが可能です。

サンプルプログラム

以下のコードは、現在開いているWord文書にパスワードを設定して、別名で保存する実用的なスクリプトです。

Sub SaveWithPassword()
Dim doc As Document
Dim strPath As String
Dim strPassword As String

‘ 現在の文書を対象にする
Set doc = ActiveDocument

‘ 保存先のパス(環境に合わせて変更してください)
strPath = ThisDocument.Path & “\機密資料_保護版.docx”

‘ 設定したいパスワード
strPassword = “MySecretPassword123”

‘ パスワード付きで保存を実行
‘ Password引数に文字列を渡すだけで設定完了です
doc.SaveAs2 FileName:=strPath, _
FileFormat:=wdFormatXMLDocument, _
Password:=strPassword

MsgBox “パスワード付きで保存が完了しました。”
End Sub

応用・注意点

現場で活用する上で、以下の点に十分注意してください。

1. パスワードの管理
VBAコード内にパスワードを直接記述すると、コードを見た人にパスワードが漏洩します。重要度の高いファイルであれば、パスワードは定数として管理せず、実行時にInputBoxでユーザーに入力させるか、暗号化された設定ファイルから読み込む運用を推奨します。

2. パスワードの紛失は致命的
一度設定したパスワードを忘れると、Wordファイルは二度と開けなくなります。マイクロソフトのサポートをもってしても解除は困難です。テスト環境で十分に動作確認を行い、パスワード管理台帳を別途用意するなどの運用ルールを徹底してください。

3. 読み取り専用と書き込みパスワードの併用
SaveAs2メソッドでは「WritePassword」引数も指定可能です。読み取りと書き込みで異なるパスワードを設定することで、閲覧者と編集者を厳密に分ける高度なセキュリティ運用も可能です。

タイトルとURLをコピーしました