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

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

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

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

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

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

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

エンジニア転職(PR)
20代まで! ウズカレITは未経験者を募集しています。

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の作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/09/30 14:07:44時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい