hiko-blog

VBA業務改善

MENU

アクセスDataからエクセルへ展開したい。

アクセスDataからエクセルへ展開したい。

今度は逆にアクセルDataから簡単にVBA利用して、エクセルへ展開する方法ないのかな。。。

同じようにデータベース接続を利用すれば、エクセルへの展開できますよ。

やっぱりできるんですね♪そこのとこ詳しくお願いします。

ハイ、では、前回同様、概略手順を下記にサンプルとして記しますね♪

 

概略手順
  1. データベース接続オブジェクトの宣言
  2. レコードセットオブジェクト
  3. アクセスのテーブル名
  4. アクセステーブルの項目名 ※アクセス項目名=エクセル項目名であること
  5. 取り込みたいDataの式追加。
サンプル
Sub Accessからimport()
  Dim mycon As New ADODB.Connection    'データベース接続オブジェクト
  Dim mrs As New ADODB.Recordset  'レコードセットオブジェクト
 
  Dim mySQL As String  'Accessの対象オブジェクト
  Dim dbPath As Variant  'データベースファイルオブジェクト
  Dim msn As Variant ’アクティブシート名
  Dim i As Integer
  
  dbPath = "D:\ProgramData\Access\FileDB.accdb"   'データベースファイルのありか
  mycon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & dbPath & ""   
  mycon.Open
  
  mySQL = "SELECT * FROM アクセスのテーブル名" 
  
 
  mrs.Open mySQL, mycon, adOpenDynamic
  
  msn = ActiveSheet.Name
 
’以下 サンプル式なので、検索条件に合わせてVBA作成必要。
------ここからーーーーーーーーーーーーーー
  i = 2  'Data貼り付け行の位置
  
  Do Until mrs.EOF
    With Worksheets(msn)
      .Cells(i, 1).Value = mrs!acn1   ’アクセステーブルの項目名
      .Cells(i, 2).Value = mrs!acn2
      .Cells(i, 3).Value = mrs!acn3
      .Cells(i, 4).Value = mrs!acn4
    End With
      i = i + 1
      mrs.MoveNext
  Loop
------ここまでーーーーーーーーーーーーーー
  mrs.Close
  Set mrs = Nothing
  mycon.Close
  Set mycon = Nothing
End Sub

 

ADOを使うための準備設定です。

VBE画面-メニューの「ツール」-「参照設定」で、

Microsoft ActiveX Data Objects **** Library を設定しておいてね♪