Excelファイルが読み取り専用か確認する方法 (ReadOnlyプロパティ)
今回はExcelファイルが読み取り専用か確認する方法を紹介します。
ファイルサーバー内のExcelファイルをマクロで編集する場合、他の人が編集中でないかを確認しておく必要があります。
読み取り専用状態で編集しようとするとエラーとなってしまいますからね。
OpenメソッドでExcelファイルを開き、読み取り専用か確認するコードを紹介します。
Excelファイルが読み取り専用か確認する方法
Sub CheckReadOnly()
'Excelファイルが読み取り専用か確認する
Dim wb As Workbook
Set wb = Workbooks.Open("ファイルパス")
'ワークブックのReadOnlyプロパティで確認する
If wb.ReadOnly Then
MsgBox "読み取り専用です"
Else
MsgBox "読み取り専用ではありません"
End If
End Sub
このようにExcelファイルが読み取り専用か確認するためにはワークブックのReadOnlyプロパティを使用します。
読み取り専用であれば処理を途中終了させるのがベターです。
Excelファイルが存在するか確認する方法
Sub CheckReadOnlyAndExist()
'Excelファイルが存在するか確認する
'Excelファイルが読み取り専用か確認する
On Error Resume Next
Dim wb As Workbook
Set wb = Workbooks.Open("ファイルパス")
'Excelファイルが存在するか確認する
If Err.Number <> 0 Then
MsgBox "Excelファイルが存在しません"
Exit Sub
End If
On Error GoTo 0
'ワークブックのReadOnlyプロパティで確認する
If wb.ReadOnly Then
MsgBox "読み取り専用です"
Else
MsgBox "読み取り専用ではありません"
End If
End Sub
ファイルサーバー内のファイルだと誰かがうっかり削除しているケースもあるかもしれません。
ファイルが存在するか確認するにはOn Error Resume Nextを使う方法がお手軽です。
ファイルが存在しない場合Openメソッドを使うタイミングでエラーが発生します。
On Error Resume Nextを使うことで一旦エラーを無視して処理させます。
代わりにエラーナンバー(Err.Number)を確認することでエラーが発生したかチェックします。
If Err.Number <> 0 Then
MsgBox "Excelファイルが存在しません"
Exit Sub
End If
エラーが発生した場合はエラーナンバー(Err.Number)が0以外となります。
そのため、0でなければファイルが存在せず、Openメソッドがエラーとなっていると判断することができます。