ExcelVBA ブックを読み取り専用モードで開いて誤編集や上書きを防ぐ

 

ExcelVBA ブックを「読み取り専用モード」で開いて誤って編集・上書きを防ぐ方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA ブックを読み取り専用モードで開く|シーン

以下のシーンで利用します。

1.マクロで開いたブックを誤って上書きしないようにする。

2.複数ユーザーが同じファイルを開くときに、競合を防ぐ。

3.バックアップ用ファイルを編集不可にして開く。

 

マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら

 

Excel VBA ブックを読み取り専用モードで開く方法

Workbook.Open メソッド 

Workbooks.Open(FileName, UpdateLinks, ReadOnly)

・FileName :開くファイルのパス
・UpdateLinks :リンクの更新(通常 False)
・ReadOnly :True にすると「読み取り専用モード」で開く

 

Excel VBA ブックを読み取り専用モードで開くサンプルコード

指定したファイルを読み取り専用で開く

Option Explicit

Sub OpenWorkbookReadOnly()
    Dim wb As Workbook
    Dim FilePath As String

    FilePath = "C:\Users\User\Desktop\DataCsv\Data.csv" ' 開くファイルのパス

    ' 読み取り専用モードで開く
    Set wb = Workbooks.Open(FilePath, UpdateLinks:=False, ReadOnly:=True)

    ' 確認メッセージ
    MsgBox "ファイルを読み取り専用で開きました", vbInformation, "確認"
End Sub

 

ポイント

・ReadOnly:=True → 読み取り専用モードで開く
・Set wb = Workbooks.Open(...) でブックを変数にセット

 

利用シーン

・誤って編集・上書きしないように開く

 

ユーザーにファイルを選ばせて、読み取り専用で開く

Option Explicit

Sub OpenWorkbookWithDialog()
    Dim wb As Workbook
    Dim FilePath As String

    ' ファイルを選択させる
    FilePath = Application.GetOpenFilename("Excelファイル (*.xlsx;*.xlsm), *.xlsx;*.xlsm")

    ' キャンセル時は処理を終了
    If FilePath = "False" Then Exit Sub

    ' 読み取り専用モードで開く
    Set wb = Workbooks.Open(FilePath, ReadOnly:=True)

    ' メッセージ表示
    MsgBox "ファイルを読み取り専用で開きました", vbInformation, "確認"
End Sub

 

ポイント

・Application.GetOpenFilename を使い、ユーザーにファイルを選ばせる
・キャンセルした場合は Exit Sub で処理を中断
・どのファイルでも対応できる柔軟な方法

 

利用シーン

・特定のファイルではなく、毎回選択して開きたい場合

 

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

 

注意点

1. 読み取り専用でも「名前を付けて保存」は可能
ReadOnly:=True で開いた場合でも、ユーザーは「名前を付けて保存」で別名保存できる

2. 読み取り専用フラグは変更できない
一度 ReadOnly:=True で開いたブックは、VBAで「編集可能」に変更できない
編集したい場合は、一度閉じて開き直す必要がある

3. 上書き保存できない
wb.Save を実行するとエラーが発生する

 

回避策(読み取り専用の場合に警告を出す)

Option Explicit

Sub SaveWorkbook()
    If ThisWorkbook.ReadOnly Then
        MsgBox "このブックは読み取り専用のため、保存できません。", vbExclamation, "警告"
    Else
        ThisWorkbook.Save
        MsgBox "ブックを保存しました", vbInformation, "確認"
    End If
End Sub

 

Excel VBA ブックを読み取り専用モードで開くまとめ

方法 メリット デメリット 適した用途
指定ファイルを読み取り専用で開 シンプル・簡単 ファイルパスが固定される 特定のファイルを開く場合
ユーザーに選ばせて開く どんなファイルにも対応可能 毎回選択が必要 ユーザーに選択させたい場合

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!