概要
ビジネスの現場において、機密情報の漏洩を防ぐことは最優先事項です。特にWordドキュメントで作成された見積書、契約書、個人情報を含む資料をメールで送付する際、ファイル自体にパスワードをかけることは必須のセキュリティ対策といえます。しかし、数百件ものWordファイルに対して手動でパスワードを設定するのは、時間的にも精神的にも非効率です。
本記事では、Excel VBAを活用して、特定のフォルダ内に格納された複数のWordドキュメントに対し、一括でパスワード保護を施す手法を解説します。VBAを使用すれば、数時間かかる作業をわずか数秒で完結させることが可能です。セキュリティレベルを維持しつつ、業務効率を劇的に向上させるための実務的なソリューションを提示します。
詳細解説
Wordのドキュメント保護には大きく分けて「読み取りパスワード」と「書き込みパスワード」の2種類が存在します。今回扱うのは、ファイルを開く際にパスワードを要求する「読み取りパスワード」です。Wordのオブジェクトモデルでは、`Document.SaveAs2`メソッドの引数として`Password`を指定することで、プログラムからパスワードを付与できます。
この処理を実現するためには、以下の3つのステップが必要です。
1. ExcelからWordアプリケーションを起動し、操作対象のファイルを開く。
2. 開いたドキュメントに対してパスワード保護を指定して保存する。
3. ファイルを閉じ、次のファイルへ処理を移行する。
注意点として、Wordのファイル操作はExcelよりも制御が複雑です。特に、パスワード付きで保存する際は、既存のファイルを上書き保存するのか、別名で保存するのかを明確に定義する必要があります。また、ファイルが開けない場合や、既に保護されている場合の例外処理(エラーハンドリング)を組み込むことが、プログラミングにおける鉄則です。
サンプルコード
以下のコードは、指定したフォルダ内のすべての「.docx」ファイルに対して、一律のパスワードを設定するVBAマクロです。
Option Explicit
' 参照設定: Microsoft Word 16.0 Object Library を有効にしてください
Sub SetPasswordToWordFiles()
Dim wdApp As Object
Dim wdDoc As Object
Dim folderPath As String
Dim fileName As String
Dim targetPassword As String
Dim fso As Object
' 設定項目
folderPath = "C:\TargetDocuments\" ' 対象フォルダのパス
targetPassword = "YourSecurePassword123" ' 設定したいパスワード
Set fso = CreateObject("Scripting.FileSystemObject")
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = False ' 処理中はWordを表示しない
fileName = Dir(folderPath & "*.docx")
Do While fileName <> ""
On Error Resume Next
Set wdDoc = wdApp.Documents.Open(folderPath & fileName)
If Not wdDoc Is Nothing Then
' パスワードを設定して上書き保存
wdDoc.SaveAs2 FileName:=folderPath & fileName, _
FileFormat:=12, _
Password:=targetPassword
wdDoc.Close SaveChanges:=False
End If
On Error GoTo 0
fileName = Dir()
Loop
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing
MsgBox "すべてのファイルへのパスワード設定が完了しました。", vbInformation
End Sub
実務アドバイス
実務でこのコードを運用する際には、いくつか注意すべき点があります。
まず、「パスワードの管理」です。VBA内にパスワードを直書き(ハードコーディング)するのは、セキュリティの観点から推奨されません。理想的には、パスワード入力用のユーザーフォームを作成するか、機密保持されたExcelのセルから読み込むように設計してください。
次に、「バックアップの重要性」です。プログラムによる一括処理は、一度実行すると元に戻すのが困難です。必ず作業前にフォルダごとコピーを取り、バックアップ環境で動作確認を行うことを強く推奨します。
また、既存のファイルを上書きするのではなく、`”Protected_” & fileName`のように別名で保存するように設計を変更すれば、万が一のデータ破損リスクを最小限に抑えられます。実務では、「失敗した時にどうリカバリーするか」まで考慮したコードが、評価されるプロのコードです。
まとめ
Wordファイルへのパスワード設定は、単なる事務作業ではなく、組織のセキュリティポリシーを守るための重要な防衛策です。VBAを習得することで、この「退屈でミスの許されない作業」を自動化し、ヒューマンエラーをゼロにすることができます。
今回紹介したコードは非常に強力ですが、あくまでツールです。このツールをどう運用し、どのファイルを保護し、そのパスワードをどう管理するかという運用ルールこそが、真のセキュリティ対策となります。ぜひこの技術を応用し、自身の業務フローを最適化してください。Excel VBAは、単なる表計算ソフトの延長ではなく、ビジネスプロセスを自動化するための強力な武器であることを忘れないでください。
