同じディレクトリ上のエクセルファイルのシート
商品マスタ.xlsxのテーブル[tbl_item]
item_id item_name item_unit_price
1 商品1 ¥4,000
2 商品2 ¥3,500
3 商品3 ¥3,300
Module
'エクセルのシートをSQLで検索し結果を受取り結果を多次元配列で返す
Function getItemMst(getSQL As String) As Variant
Dim cn As ADODB.Connection
Dim cnStr As String
Dim rs As ADODB.Recordset
Dim FileName As String
Dim FilePath As String
Dim strSQL As String
FileName = "商品マスタ.xlsx"
FilePath = ThisWorkbook.Path & "\" & FileName
'Connection
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data source=" & FilePath & ";" & _
"Extended Properties=""Excel 12.0;"";"
rs.Source = getSQL
rs.ActiveConnection = cn
rs.Open
'レコードセットを配列に入れる(GetRows)
'さらに配列の行列を入れ替える(Transpose)
getItemMst = WorksheetFunction.Transpose(rs.GetRows)
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Function
このSheetが表示された時に読み込まれる
Private Sub Worksheet_Activate()
Dim recSet As Variant
Dim strSQL As String
strSQL = "SELECT item_id,item_name,item_unit_price FROM [tbl_item$]"
recSet = getItemMst(strSQL)
Dim sheetRow As Integer
Dim sheetcol As Integer
Dim x As Long, y As Long
Range("D3:G20") = recSet
End Sub

コメントを残す
コメントを投稿するにはログインしてください。