【VBAリファレンス】Wordドキュメントにパスワード保護を一括設定するプロの極意

スポンサーリンク

概要

ビジネスの現場において、機密情報の漏洩を防ぐことは最優先事項です。特に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は、単なる表計算ソフトの延長ではなく、ビジネスプロセスを自動化するための強力な武器であることを忘れないでください。

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