Home » Access VBA » Access VBAでExcelブックを読み取り専用で開く

Access VBAでExcelブックを読み取り専用で開く

動作検証バージョン:Windows 11 Home + 64bit Access & Excel バージョン 2403(ビルド17404.20000クイック実行)ベータチャネル

「access vba .workbooks.open 読み取り専用」
「ACCESS VBA エクセルを 読み取り専用で開く」
といった検索で時折アクセスがあります。
Access VBAを使って、Excelのブックを読み取り専用の状態で開くには、どのようなコードを書けばいいのかを調べていた方による検索でしょう。

[スポンサードリンク]

Excelブックを読み取り専用で開くサンプルプロシージャ

Cドライブのtempフォルダーにsample.xlsxを用意しておいて、以下のSubプロシージャを実行してください。

Sub Excelブックを読み取り専用で開く()
On Error GoTo ErrHandl
 
 Dim xl_app As Object
 Set xl_app = CreateObject("Excel.Application")
 xl_app.Visible = True
 
 Dim xl_bk As Object
 Set xl_bk = _
   xl_app.Workbooks.Open("C:\temp\sample.xlsx", ReadOnly:=True)
 
 Set xl_bk = Nothing
 Set xl_app = Nothing

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 1004
   MsgBox "指定されたブックが見つかりません。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

Excel.Workbooks.Openの引数ReadOnlyで読み取り専用で開ける

VBAのCreateObject関数の第1引数Classに、

文字列「Excel.Application」を指定することで、Excel.Applicationオブジェクトへの参照を取得し、変数xl_appへ代入しています。

Dim xl_app As Object
Set xl_app = CreateObject("Excel.Application")

この後は、実質的にExcel VBAです。

上記の「CreateObject("Excel.Application")」で、Excelが非表示で起動しますが、非表示では何が起きているかわからないので、Excel.Application.VisibleプロパティにTrueを指定することで、

Excelが見える状態にしています。

xl_app.Visible = True

この後が、
「access vba .workbooks.open 読み取り専用」
「ACCESS VBA エクセルを 読み取り専用で開く」
と検索なさった方の求めていたコードです。

Dim xl_bk As Object
Set xl_bk = _
  xl_app.Workbooks.Open("C:\temp\sample.xlsx", ReadOnly:=True)

Excel.Workbooks.Openメソッドの引数ReadOnlyにTrueを指定することで、

読み取り専用の状態でブックを開き、変数xl_bkへ代入を行っています。

最終更新日時:2024-02-28 13:55

[スポンサードリンク]

Home » Access VBA » Access VBAでExcelブックを読み取り専用で開く

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.