
ExcelVBA ブックを「読み取り専用モード」で開いて誤って編集・上書きを防ぐ方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
目次
Excel VBA ブックを読み取り専用モードで開く|シーン
以下のシーンで利用します。
1.マクロで開いたブックを誤って上書きしないようにする。
2.複数ユーザーが同じファイルを開くときに、競合を防ぐ。
3.バックアップ用ファイルを編集不可にして開く。
マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら
Excel VBA ブックを読み取り専用モードで開く方法
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エキスパート資格を解説!