連携

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へ
posted by Yy at 05:33 | Comment(0) | 連携 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。