【スポンサーリンク】

[Excel]個人用マクロブックがロックされないように「読み取り専用」にするマクロのメリット・デメリット(ChangeFileAccess, xlReadOnly)

[Excel]個人用マクロブックがロックされないように「読み取り専用」にするマクロのメリット・デメリット(ChangeFileAccess, xlReadOnly)
  • Excelの個人用マクロブックは自動読み込み時に排他制御の問題が発生し、警告メッセージが表示されることがあります。
  • この問題を解決するために、マクロブックを読み取り専用モードで開くか、自動読み込みを無効にする方法があります。
  • ただし、これらの解決策にはマクロの編集や利用に関して一定の制限があります。
[Excel]個人用マクロブックがロックされないように「読み取り専用」にするマクロのメリット・デメリット(ChangeFileAccess, xlReadOnly)

この警告ってわずらわしいよね。

\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 警告メッセージの原因(自動読み込みと排他制御)

Excelを開いて個人用マクロブックが開かれているときに、エクスプローラーのプレビューで表示したり、Altキーを押しながらExcelを起動したりして2つ目のExcelを異なるプロセスとして立ち上げると、警告メッセージが表示されます。

これは、個人用マクロブック(Personal.xlsb)は、Excelが起動するたびに自動的に読み込まれる特殊なファイルだからです。
このファイルには、ユーザーが作成したマクロやカスタム関数が格納されており、すべてのExcelセッションで利用可能になります。

一方、ExcelなどのOfficeアプリケーションには、ファイルの同時編集を防ぐための排他制御の仕組みがあります。
通常、一つのプロセスがファイルを書き込みモードで開くと、他のプロセスはそのファイルを編集できません。

問題が発生するメカニズム
  1. 最初のExcelインスタンスが起動すると、Personal.xlsbを書き込みモードで開きます。
  2. Altキーを押しながら新しいExcelインスタンスを起動すると、別プロセスとして動作します。
  3. 2つ目のインスタンスもPersonal.xlsbを開こうとしますが、既に1つ目のインスタンスが書き込みモードで開いているため、競合が発生します。
  4. この競合により、警告メッセージが表示されます。
警告メッセージの原因(自動読み込みと排他制御)

この警告は邪魔に感じることもありますが、別のインスタンスで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には、個人用マクロブックの自動読み込みを無効にする設定もあります。

  1. Excelの「ファイル」タブから「オプション」を選択します。
  2. 「詳細設定」の「全般」セクションから「起動時に個人用マクロブックを読み込む」のチェックボックスを外します。
  3. 「OK」をクリックして変更を保存します。

ただし、ふだんからマクロを利用している人には不便です。

個人用マクロブックに保存されているマクロやカスタム関数を使うためには、手動で「C:\Users[ユーザー名]\AppData\Roaming\Microsoft\Excel\XLSTART」フォルダにある「Personal.xlsb」ファイルを開く必要があるからです。

(参考)

(補足)

  1. 開いたら強制的にReadOnlyに変えるマクロを仕込む (マクロをいじるときだけ手動で編集モードにする) – ちゅんさん X
QRコードを読み込むと、関連記事を確認できます。

[Excel]個人用マクロブックがロックされないように「読み取り専用」にするマクロのメリット・デメリット(ChangeFileAccess, xlReadOnly)
【スポンサーリンク】
タイトルとURLをコピーしました