Excel を常に読み取り専用で開かせるマクロ

会社で皆が見ているブックを読み取り専用にせず開いたまま離席する人がいて迷惑しているので、「お願いですからこのマクロ入れてください」ってお願いした。

(共有ブックにするとセル結合とかできないので共有ブックにはしないである…)

ネタ元のコードは上のサイトを参照のこと。ExcelApplication_SheetChange プロシージャはなくてもとりあえず OK。

上のサイトが消えた時のために以下に引用し、一部修正。これを個人用マクロブック (Personal.xlsb) に仕込んでおく。

Dim WithEvents ExcelApplication As Application

Private Sub Workbook_Open()
    Set ExcelApplication = Application
End Sub

Sub ExcelApplication_WorkbookOpen(ByVal wb As Workbook)
    If wb Is ThisWorkbook Then
        Exit Sub
    End If
    
    If Not wb.ReadOnly Then
        If MsgBox(wb.Path & "\" & wb.Name & "を読み取り専用で開きますか?", vbYesNo + vbQuestion + vbDefaultButton1, "確認") = vbYes Then
            wb.Saved = True
            wb.ChangeFileAccess Mode:=xlReadOnly
        End If
    End If
End Sub