高速でアクセスとエクセルとのデータをやりとりする方法
接続設定と変数への書き込み
変数からエクセルへの配列書き込みの
備忘録
‘ここからはaccessへの接続の分、変数宣言
Dim cn As ADODB.Connection ‘コネクションの設定宣言
Dim rs As ADODB.Recordset ‘レコード設定の宣言
Dim aTblnm As String ‘データを抽出するSQLステートメント
Dim Row1 As Long ‘sheetに書き込む行数
Dim Datval() As Variant
Row1 = 1
aTblnm = TblName ‘テーブル名
aTblPath = DbPath & “\” & DbName
Set cn = New Connection
cn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & aTblPath
‘**********************************************************************
cn.Open ‘接続宣言 Order
‘*******************************************************************************
Selcmd = fnAcPrtSelectSQL(TblName, Kb, Zkb, Stymd, Enymd, Skb) ‘SelectのSQL
Set rs = New Recordset
rs.Open Selcmd, cn, CursorType:=adOpenStatic
If rs.EOF = True Then
fnAcTukiShukei = 0
Else
‘再配列宣言
ReDim Preserve Datval(0 To rs.RecordCount, 0 To rs.Fields.Count)
With Sheets(Shnm)
For col = 0 To rs.Fields.Count – 1
Datval(0, col + 1) = rs.Fields(col).Name
Next col
rs.MoveFirst
Do Until rs.EOF
For col = 0 To rs.Fields.Count – 1
Select Case col
Case Is > 5
.Cells(Row1, col + 1).NumberFormatLocal = “#,##0” ‘書式設定をしたいセルだけセット
End Select
Datval(Row1, col + 1) = rs.Fields(col)
Next col
Row1 = Row1 + 1
rs.MoveNext
Loop
End With
End If
Sheets(Shnm).Range(Cells(2, 1), Cells(rs.RecordCount + 2, rs.Fields.Count + 1)) = Datval
Set rs = Nothing
‘コネクションの後処理をする
‘*******************************************************************************
‘レコードセットなどの後処理をする
cn.Close
Set cn = Nothing
End Function