- Excelの個人用マクロブックは自動読み込み時に排他制御の問題が発生し、警告メッセージが表示されることがあります。
- この問題を解決するために、マクロブックを読み取り専用モードで開くか、自動読み込みを無効にする方法があります。
- ただし、これらの解決策にはマクロの編集や利用に関して一定の制限があります。
この警告ってわずらわしいよね。
1. 警告メッセージの原因(自動読み込みと排他制御)
Excelを開いて個人用マクロブックが開かれているときに、エクスプローラーのプレビューで表示したり、Altキーを押しながらExcelを起動したりして2つ目のExcelを異なるプロセスとして立ち上げると、警告メッセージが表示されます。
これは、個人用マクロブック(Personal.xlsb)は、Excelが起動するたびに自動的に読み込まれる特殊なファイルだからです。
このファイルには、ユーザーが作成したマクロやカスタム関数が格納されており、すべてのExcelセッションで利用可能になります。
一方、ExcelなどのOfficeアプリケーションには、ファイルの同時編集を防ぐための排他制御の仕組みがあります。
通常、一つのプロセスがファイルを書き込みモードで開くと、他のプロセスはそのファイルを編集できません。
この警告は邪魔に感じることもありますが、別のインスタンスでExcelが起動していることに気づかせてくれる役割もあります。
2. 個人用マクロブックを読み取り専用で開く
Personal.xlsb を読み取り専用モード(xlReadOnly)に強制変更すれば、ファイルの排他制御問題は避けられます。
Private Sub Workbook_Open()
Me.ChangeFileAccess Mode:=xlReadOnly
End Sub
これで、複数のExcelを起動しても警告は表示されなくなります。
2-1. マクロを記録する前に書き込みモードに
ただし、マクロの記録やコードのメモを気軽に行うことは難しくなります。
個人用マクロブックを編集する前には、マクロを実行してPersonal.xlsbを xlReadWriteモードに変更する必要があります1。
Sub ChangeToWriteCode()
Me.ChangeFileAccess Mode:=xlReadWrite
End Sub
もし、うっかり読み取り専用のままコードを変更してしまうとエラーになります。
「名前を付けて保存」から上書きできず、「破棄」ボタンを押すと変更点がすべて消えてしまいます。
3. 個人用マクロブックを読み込まない
Excelには、個人用マクロブックの自動読み込みを無効にする設定もあります。
- Excelの「ファイル」タブから「オプション」を選択します。
- 「詳細設定」の「全般」セクションから「起動時に個人用マクロブックを読み込む」のチェックボックスを外します。
- 「OK」をクリックして変更を保存します。
ただし、ふだんからマクロを利用している人には不便です。
個人用マクロブックに保存されているマクロやカスタム関数を使うためには、手動で「C:\Users[ユーザー名]\AppData\Roaming\Microsoft\Excel\XLSTART」フォルダにある「Personal.xlsb」ファイルを開く必要があるからです。
(補足)
- 開いたら強制的にReadOnlyに変えるマクロを仕込む (マクロをいじるときだけ手動で編集モードにする) – ちゅんさん X