vba を使用して excel と access との連携が簡単にできます!
vba excel access 簡単です! Homeへ
連携
vba使用し、 excel と access とを連携させ、データをインポート・エクスポートできます。
ADOとオートメーションを使用する2通りの vba を使用した連携ができます。
連携によるエクスポートについて、別のページ「エクスポート」記事を参照願います。
ここで説明した連携によるインポートは、excel へ access からデータをインポートすることを意味します。
省略した説明は、「接続」、「エクスポート」記事にあります。 参照願います。
「連携」とは、お互いに連絡をとりあって物事をおこなうこと。(※ 岩波書店、広辞苑より引用)
この内容をexcelとaccess連携に適用すると、excelとaccessは、お互いにADOを使用して連絡をとりあい、
データをexcelのセルからaccessのレコードのフィールドへエクスポートすることです。
また、excelのセルへaccessのフィールドデータをインポートすることで連携する、と言えます。
データのインポート・エクスポートが「連携」の目的であり、軽快なADOが活用される理由となっています。
1. ADOを利用して excel へ access 連携させ、テーブルからデータをインポートする方法
連携するための主なポイントは、ひとつです。
(1) access テーブルから全てのデータをセルにコピーできます。
※ その他のステートメントの詳細は、「接続」、「エクスポート」記事を参照願います。
Sub import_ws_ADO()
''VBEの「ツール」ー「参照設定」で Microsoft ActiveX Data Objects X.XX Library にチェックを入れます。
Dim oCn As ADODB.Connection
Dim oRs As ADODB.Recordset
Debug.Print "Start ADO " & Time
Set oCn = New ADODB.Connection
Set oRs = New ADODB.Recordset
oCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Program Files\Microsoft Office\Office14\ACCWIZ\Imp_Accdb.accdb;"
oRs.Open "SELECT * FROM Sheet1;", oCn, adOpenStatic, adLockReadOnly
WorkSheets("Sheet1").Activate
Cells(1, 1).Value = "Data1"
Cells(1, 2).Value = "Data2"
Range("A2").CopyFromRecordset oRs '(1) テーブルのデータをまとめてコピーできます。
Set oRs = Nothing
Set oCn = Nothing
Debug.Print "END ADO " & Time
End Sub
2. excel へ access のデータをオートメーションによる連携でインポートする方法
連携のポイントは、1か所です。 ( )内の番号は、説明の次にある各ステートメントのコメント内の番号と対応しています。
(1) excel のワークシートは、セル範囲まとめて access へ転送できます。
この連携は、accessのエクスポートモードによりデータが転送され、シートの excelセルA1 が転送先の基準セルです。
1行目は、ヘッダーを入力させるため、 引数「True」を指定します。
Sub import_ws_automation()
Dim oApp As Object
Debug.Print "Start AutoMation " & Time
On Error Resume Next
Set oApp = GetObject(, "Access.Application")
If Err.Number <> 0 Then
Err.Clear
Set oApp = CreateObject("Access.Application")
End If
oApp.OpenCurrentDatabase "C:\Program Files\Microsoft Office\Office14\ACCWIZ\Imp_Accdb.accdb"
oApp.Visible = True
oApp.Docmd.TransferSpreadsheet acExport, 8, "Sheet1", "C:\Documents and Settings\Administrator\デスクトップ\Exp_Book1.xlsm", True
'(1)
Set oApp = Nothing
Debug.Print "END AutoMation " & Time
End Sub
ADOとオートメーションのvba を使用した excel と access の接続を活用しましょう!
vba excel access 簡単です! Homeへ