AccessとExcelとの連携


高速でアクセスとエクセルとのデータをやりとりする方法

接続設定と変数への書き込み

変数からエクセルへの配列書き込みの

備忘録

‘ここからは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

, ,

2021年3月
1234567
891011121314
15161718192021
22232425262728
293031  
最近の記事
カテゴリ
月別アーカイブ