プロが教えるわが家の防犯対策術!

下記のようなマクロを組んで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

A 回答 (1件)

答えになっていませんが、ADOを使った方が楽だと思うのですが。


EXCEL&ACCESSデータベース連携テクニック 古川順平著
にいろんな例が載っていてたいていの事はそれのマネでいけますが。

この回答への補足

自己解決できましたので結果をご報告いたします
'***************************************
'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

補足日時:2007/12/21 22:37
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/12/04 23:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています