動作検証バージョン:Windows 11 Home + 64bit Access & Excel バージョン 2407(ビルド17809.20000クイック実行)ベータチャネル
「access vba excel 1シート目を参照する」
といった検索キーワードでアクセスがありました。
Access VBAで、Excelの1枚目のシートへの参照を取得するには、どのようなコードを書けばいいのかを調べていらしたのでしょう。
[スポンサードリンク]
Excelの1枚目のシートを取得するサンプルプロシージャ
Excelブックが1つだけ起動している状態で以下のSubプロシージャを実行してください。
Sub Excelの1枚目のシートを取得する()
On Error GoTo ErrHandl
With GetObject(Class:="Excel.Application")
Dim xl_sht1 As Object
Set xl_sht1 = .Sheets.Item(1)
Stop
End With
Exit Sub
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Excelが起動していないようです。"
Case 91
MsgBox "Excelファイルが開かれていないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
On Error GoTo ErrHandl
With GetObject(Class:="Excel.Application")
Dim xl_sht1 As Object
Set xl_sht1 = .Sheets.Item(1)
Stop
End With
Exit Sub
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Excelが起動していないようです。"
Case 91
MsgBox "Excelファイルが開かれていないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
Stopステートメントで中断して、起動しているExcelブックの1枚目のシートを表すオブジェクト(通常Worksheetオブジェクト)が変数xl_sht1に代入されている様子を、下図のようにローカルウィンドウで確認できます。
サンプルプロシージャで行っている処理
上記のSubプロシージャでは、VBAのGetObject関数の引数Classに文字列「Excel.Application」を指定することで、起動しているExcel.Applicationへの参照をまず取得しています。
With GetObject(Class:="Excel.Application")
Excel.Applicationへの参照を取得した後は、実質的にExcel VBAのコードです。
本当のExcel VBAであれば、以下のコードでアクティブなブックの1枚目のシートを取得できますが、
Dim xl_sht1 As Object Set xl_sht1 = Sheets.Item(1)
Access VBAのWithステートメント内ですから「Sheet」の直前の「.」が必要です。
Dim xl_sht1 As Object Set xl_sht1 = .Sheets.Item(1)
「.Item」を省略した以下のコードでもOKです。
Dim xl_sht1 As Object Set xl_sht1 = .Sheets(1)
[スポンサードリンク]
Home » Access VBA » Access VBAでExcelの1枚目のシートを取得する