• 締切済み

Excel から Accessクエリーを実行したい

下記のようなマクロを組んでMS Accessのクエリー結果をExcelに出力したいのですが「レコードがない」というエラーになります。正しいコーディングを教えてください。 Sub DataFromAccess() Dim AccessApp As Object Set AccessApp = CreateObject("Access.Application") myDBName = "C:\MyAccess.mdb" '出力先フルパス xlsName = "C:\Invoice.xls" With AccessApp .Visible = True .OpenCurrentDatabase myDBName, acViewNormal .DoCmd.OutputTo acOutputQuery, "クエリー名", acFormatXLS, xlsName, True .CloseCurrentDatabase .Quit End With Set AccessApp = Nothing End Sub

みんなの回答

  • USB99
  • ベストアンサー率53% (2222/4131)
回答No.1

答えになっていませんが、ADOを使った方が楽だと思うのですが。 EXCEL&ACCESSデータベース連携テクニック 古川順平著 にいろんな例が載っていてたいていの事はそれのマネでいけますが。

Alpha-j
質問者

お礼

USB99さま 早々のご回答ありがとうございます。 ご紹介いただいた本は早々購入してみます。 今回の趣旨は私が使うというのではなく、Excelのマクロでデータ処理を自動化するのですが、途中Accessからデータを抜かなければならない箇所があり、ユーザにあれやれ、これやれとしたくないということです。ボタンワンクリックですべてできるようにしたいのです。

Alpha-j
質問者

補足

自己解決できましたので結果をご報告いたします '*************************************** 'ACCESSのクエリーを実行して結果をシート '*************************************** Dim AcCon As ADODB.Connection Dim AcCmd As ADODB.Command Set AcCon = New ADODB.Connection Set AcCmd = New ADODB.Command '1. 対象DBとマクロ名を指定 Target_File_Name = "C:\test.mdb" '2.アクセスの起動とマクロの実行 '2-1.Access DB を開く AcCon.Open "Provider = Microsoft.Jet.OLEDB.4.0; _ Data Source =" & Target_File_Name '2-2.クエリーを指定する With AcCmd .ActiveConnection = AcCon .CommandText = "クエリー名" End With '2-3.クエリーを実行して結果をRecSetに入れる Set RecSet = AcCmd.Execute '2-4.Excelシートに吐き出す Worksheets("シート名").Select Range("A2").CopyFromRecordset RecSet

関連するQ&A