ブックを読み取り専用で開くには、
Workbooks.Openの引数ReadOnlyにTrueを指定します。
Workbooks.Open "C:\Users\wfsp\Desktop\テストブック.xlsx", ReadOnly:=True ' 変数に入れる場合 Dim ファイルパス As String ファイルパス = "C:\Users\wfsp\Desktop\テストブック.xlsx" Dim wb読取ブック As Workbook Set wb読取ブック = Workbooks.Open(ファイルパス, ReadOnly:=True)
ただし既に開いているファイルに対して実行しても、
エラーにはならず、かつ読取専用にはなってくれません。
確実にブックを読取専用にしてから処理を行いたい場合は、
開いている場合はいったん閉じてから読取専用で開き直すか、
Sub ブックを読取専用で開く() If Isブックを開いている("テストブック.xlsx") Then Workbooks("テストブック.xlsx").Close False End If Dim ファイルパス As String ファイルパス = "C:\Users\wfsp\Desktop\テストブック.xlsx" Dim wb読取ブック As Workbook Set wb読取ブック = Workbooks.Open(ファイルパス, ReadOnly:=True) End Sub Function Isブックを開いている(判定ブック名 As String) As Boolean Dim wb As Workbook For Each wb In Workbooks If wb.Name = 判定ブック名 Then Isブックを開いている = True Exit Function End If Next End Function
あるいはWorkbookオブジェクトのChangeFileAccessメソッドを使用して、
開いたままブックを読み取り専用に変更してください。
' ブックが読取専用でなければ読取専用にする If ActiveWorkbook.ReadOnly = False Then ActiveWorkbook.ChangeFileAccess xlReadOnly End If
詳細はこちらの記事をどうぞ