Excelのマクロでパスワード付きブックを開閉する処理を実行した後、通常の操作でパスワード付きファイルを開こうとすると、なぜか最初の1回だけパスワード入力画面が表示されず「パスワードが正しくありません」などのエラーが出ることがあります。2回目以降は正常にパスワード入力画面が表示されるため、再現性があるものの原因が分かりにくい現象です。この記事では、Excelの内部状態やマクロ処理との関係を踏まえながら、原因と回避方法を解説します。
Excelのパスワード処理とマクロの関係
Excelでは、VBAのWorkbooks.Openメソッドでパスワード付きファイルを開くことができます。
例えば以下のような処理です。
Workbooks.Open Filename:="sample.xlsx", Password:="1234"
このような処理を繰り返し実行すると、Excel内部にパスワード関連の情報やファイルアクセス状態が一時的に保持されることがあります。
その結果、本来表示されるはずのパスワード入力ダイアログが正常に表示されず、空パスワードが送信されたような状態になるケースが報告されています。
よくある原因
現象が発生する場合、以下の要因が関係していることがあります。
| 原因候補 | 内容 |
|---|---|
| マクロによるパスワードキャッシュ | 直前の処理情報がExcel内部に残る |
| ファイルオブジェクトの解放不足 | ブックやオブジェクトが完全に閉じられていない |
| アドインとの競合 | PDF変換ソフトや管理ツールが干渉する |
| Excelの不具合 | 特定バージョンで発生することがある |
| 共有フォルダ環境 | ネットワーク経由で認証状態が残る場合がある |
特にマクロで大量のファイルを開閉している環境では発生しやすい傾向があります。
マクロ側で見直したいポイント
VBAでブックを開いた後、必ず適切に閉じているか確認しましょう。
wb.Close SaveChanges:=FalseSet wb = Nothing
また、処理終了時にオブジェクトを解放していない場合、Excelが内部状態を保持し続けることがあります。
複数ファイルを連続処理している場合は、DoEventsを入れて処理を安定させることで改善することもあります。
一時的な回避方法
根本原因が特定できない場合でも、次の方法で改善するケースがあります。
- マクロ実行後にExcelを再起動する
- 全てのブックを閉じてから対象ファイルを開く
- Officeを最新バージョンへ更新する
- セーフモードでExcelを起動して確認する
- 不要なCOMアドインを無効化する
特にアドインが影響しているケースでは、Excelセーフモードで現象が再現しないことがあります。
Excelの設定を確認する方法
Excelの動作に異常がある場合は、セーフモードで起動して確認するのが有効です。
- Windowsキー+Rを押す
- 「excel /safe」と入力する
- Enterキーを押す
この状態で同じ現象が発生しなければ、アドインや追加ソフトの影響が疑われます。
Office修復で改善する場合もある
Office本体の設定破損によってパスワードダイアログの挙動がおかしくなる場合があります。
その場合は「アプリと機能」からMicrosoft 365またはOfficeを選択し、「クイック修復」や「オンライン修復」を実行すると改善することがあります。
企業環境で利用している場合は、システム管理者へ相談するのも有効です。
まとめ
マクロ実行後にパスワード付きExcelファイルを開く際、最初だけパスワード入力画面が表示されずエラーになる現象は、Excel内部のパスワード処理やオブジェクト管理、アドインとの競合などが原因となることがあります。
まずはマクロ内でブックやオブジェクトを正しく解放しているか確認し、セーフモード起動やOffice修復を試してみましょう。再現条件が「マクロ実行直後のみ」であれば、VBA処理の見直しによって改善できる可能性があります。


コメント