ワークブックを読み取り専用で開く
にメンテナンス済み
VBA を使ってワークブックを操作している時、他のワークブックから情報を取得したい場合があります。
その時、他のワークブックを読み取り専用で開くことで、データの誤っての変更を防ぎながら、必要な情報を表示・取得することができます。
このページでは、VBA を使ってワークブックを読み取り専用で開く方法を紹介します。
ワークブックを読み取り専用で開く
ワークブックを読み取り専用で開くには、Workbooks.Open
メソッドの ReadOnly
引数に True
を指定します。
Workbooks.Open(ReadOnly:=True)
以下のコードは、ユーザーのドキュメントフォルダにある sample.xlsx
を読み取り専用で開く例です。
Dim wb As Workbook, path As String
' ユーザーのドキュメントフォルダ
path = Environ("USERPROFILE") & "\Documents\sample.xlsx"
' ワークブックを読み取り専用で開く
Set wb = Workbooks.Open(path, ReadOnly:=True)
' ワークブックを閉じる
wb.Close
注意点
読み取り専用で開いたワークブックは、保存する際に元のファイルを上書きすることはできません。別名で保存する必要があります。
パスが正しくない、またはアクセス権限がない場合、ワークブックは開かれません。適切なエラーハンドリングを行うことをお勧めします。
以下のコードは、エラーが発生した時にすでにワークブックを開いていた場合、ワークブックを閉じる例です。
Public Sub OpenReadOnlyWorkbook()
On Error GoTo ErrorHandler
Dim wb As Workbook, path As String
' ユーザーのドキュメントフォルダ
path = Environ("USERPROFILE") & "\Documents\sample.xlsx"
' ワークブックを読み取り専用で開く
Set wb = Workbooks.Open(path, ReadOnly:=True)
' 何らかの処理
' ワークブックを閉じる
wb.Close
Exit Sub
ErrorHandler:
' すでにワークブックを開いていた場合、閉じる
If Not wb Is Nothing Then
wb.Close
End If
MsgBox "エラーが発生しました。"
End Sub
まとめ
VBA を使って Excel のワークブックを読み取り専用で開く方法を紹介しました。
前述したサンプルコードを参考に、ニーズに合わせてカスタマイズしてください。
#vba
#Excelの操作
#workbook
#read-only