VBAで自動化 VBA一覧 セル・シート・ブック操作 パスワード保護・セキュリティ管理 保護・解除

【VBA】ファイルにパスワードを付けて保存する方法|具体例つきで徹底解説

Excel VBAを使って自動でブックを保存する際、「パスワードを付けて保護したい」というケースは少なくありません。特に社外秘資料や重要なレポートを扱う場合、セキュリティ対策としてパスワード設定は欠かせないでしょう。この記事では、VBAを使ってブック保存時にパスワードを付ける方法を、初心者にも分かりやすく具体例とともに解説します。手作業による保存ミスを防ぎ、より安全にExcelファイルを管理したい方におすすめの内容です。

VBAでパスワード付き保存が必要とされるシーン

セキュリティ意識が高まる昨今、ファイル単位での情報保護が求められています。特に次のような場面では、パスワード付き保存が強く推奨されます。

  • 社外に提出する重要資料の保護

  • 社内限定共有資料のアクセス制限

  • 顧客情報や個人データを含むファイルの暗号化

VBAによる自動化処理にパスワード設定を組み込むことで、人為的なミスや漏洩リスクを最小限に抑えることが可能です。

【VBA】パスワード解除方法とは?安全に対応するための基本知識と注意点

VBAでパスワードを付けて保存する基本構文

まず、VBAでパスワードを付けて保存するには、「SaveAs」メソッドを使用します。
「SaveAs」メソッドには、パスワード設定用の引数が用意されており、特に重要なのは以下の2つです。

 

引数説明
Passwordファイルを開くときのパスワード
WriteResPassword書き込みを制限するパスワード

基本的な構文は次のとおりです。

ThisWorkbook.SaveAs _

Filename:="C:\保存先\ファイル名.xlsx", _
Password:="開く用パスワード", _
WriteResPassword:="書き込み制限パスワード"

このコードでは、

  • ファイルを開くときに「開く用パスワード」

  • 書き込みを制限するために「書き込み制限パスワード」 が設定されます。

もちろん、どちらか一方だけ設定することも可能です。

【VBA】マクロを削除する方法|不要なマクロの安全な消し方と注意点

パスワードを付けて別名保存するマクロ

実際に、ブックをパスワード付きで別名保存するマクロを作成してみましょう。

Sub SaveWorkbookWithPassword()

Dim savePath As String
Dim openPassword As String
Dim writePassword As String

' 保存先パスとファイル名を指定
savePath = "C:\保存先\重要ファイル.xlsx"

' パスワードを指定
openPassword = "open123"
writePassword = "write456"

' パスワードを設定して保存
ThisWorkbook.SaveAs _

Filename:=savePath, _
Password:=openPassword, _
WriteResPassword:=writePassword, _
FileFormat:=xlOpenXMLWorkbook ' 拡張子xlsxで保存

End Sub

このマクロを実行すると、指定されたフォルダに「重要ファイル.xlsx」が保存され、
開くときに「open123」、編集するときに「write456」のパスワードが求められるようになります。

【VBA】プロジェクトにパスワードを設定する方法|セキュリティ強化のための基本手順と注意点

注意点:パスワードは忘れると復元できない

VBAで設定したパスワードは、ファイルそのものに暗号化されるため、忘れてしまうと基本的に復元できません。
対策としては以下が挙げられます。

  • パスワードを安全な場所に記録・保管しておく

  • 必要に応じてパスワードの通知・共有手段を決めておく

特にVBAマクロ内にパスワードを直接記述している場合、コードが漏洩するとパスワードも漏れるリスクがあります。
セキュリティ要件によっては、別ファイルや別管理システムから読み込む形でパスワードを保持する方が安全です。

保存前にユーザーにパスワードを入力させる

さらに一歩進んで、保存時に都度パスワードを入力させる方法も紹介します。
ユーザーフォームを使わなくても、簡単な「InputBox」で実装できます。

Sub SaveWithUserInputPassword()

Dim savePath As String
Dim userPassword As String

savePath = "C:\保存先\ユーザー指定ファイル.xlsx"

' パスワードを入力してもらう
userPassword = InputBox("開くためのパスワードを入力してください。")

If userPassword = "" Then

MsgBox "パスワードが入力されなかったため保存を中止しました。", vbExclamation
Exit Sub

End If

' パスワードを設定して保存
ThisWorkbook.SaveAs _

Filename:=savePath, _
Password:=userPassword, _
FileFormat:=xlOpenXMLWorkbook

End Sub

このコードでは、保存前にパスワードを入力するポップアップが表示されます。
パスワードなしで保存されるリスクを防ぎ、利用者自身の責任でパスワード設定が可能になります。

まとめ|VBAでのパスワード付き保存を使いこなそう

VBAを活用してブック保存時にパスワードを設定することで、ファイル管理のセキュリティレベルを飛躍的に高めることができます。

  • SaveAsメソッドの「Password」「WriteResPassword」を活用

  • パスワードの取り扱いには十分注意

  • ユーザー入力型にすれば、柔軟な運用も可能

日常業務で扱う大切なデータを、手間をかけずに守るためにも、ぜひVBAによるパスワード保存テクニックを取り入れてみてください。

-VBAで自動化, VBA一覧, セル・シート・ブック操作, パスワード保護・セキュリティ管理, 保護・解除