このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

Excelファイルが読み取り専用か確認する方法 (ReadOnlyプロパティ)

2024年3月26日

Excelファイルが読み取り専用か確認する方法 (ReadOnlyプロパティ)

今回はExcelファイルが読み取り専用か確認する方法を紹介します。

ファイルサーバー内のExcelファイルをマクロで編集する場合、他の人が編集中でないかを確認しておく必要があります。

読み取り専用状態で編集しようとするとエラーとなってしまいますからね。

OpenメソッドでExcelファイルを開き、読み取り専用か確認するコードを紹介します。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

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メソッドがエラーとなっていると判断することができます。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい