CreateQueryDefにて生成したクエリをDoCmdでエクスポート可能でしょうか?


VB6で下記のプログラムを書きました。メインのロジックの部分だけ掲載します。VBでACCESSの「A.mdb」接続し、CreateQueryDefで「テストクエリ」というクエリを生成し、そのクエリをエクセルファイルとしてエクスポートすることが目標です。

結果は「テストクエリ」は生成されますが、エクスポートされません。エラーメッセージなどは出ませんが、DoCmd.TransferSpreadsheetが実行されないようです。

もし「A.mdb」を立ち上げていると成功します。「A.mdb」を立ち上げずに行うことはできますでしょうか?

Dim DB As Database
Dim qdf As QueryDef
Dim strSQL As String

Set DB = OpenDatabase("C:\A.mdb")
strSQL = "SELECT ○○○;"

Set qdf = DB.CreateQueryDef("テストクエリ", strSQL)
DoCmd.TransferSpreadsheet acExport, 8, "テストクエリ", "C:\テストクエリ.xls", False, ""

回答の条件
  • 1人3回まで
  • 登録:2009/04/11 07:21:47
  • 終了:2009/04/11 09:20:18

回答(1件)

id:fester No.1

fester回答回数124ベストアンサー獲得回数202009/04/11 07:39:44

ポイント60pt

DoCmdはAccessアプリケーションのオブジェクトだからです。



Option Explicit

Const acExport = 1
Dim objAccess
Dim qdf
Dim strSQL

'Accessオブジェクトを作成します
Set objAccess = CreateObject("Access.Application")
objAccess.Visible = False
objAccess.OpenCurrentDatabase("C:\A.mdb")

'DBオブジェクトを作ります
Set objDB = objAccess.CurrentDb

strSQL = "SELECT ○○○;"
Set qdf = objDB.CreateQueryDef("テストクエリ", strSQL)

objAccess.DoCmd.TransferSpreadsheet acExport, 8, "テストクエリ", "C:\テストクエリ.xls", False, ""

'MDBファイルを閉じます
objAccess.CloseCurrentDatabase

'Accessオブジェクトの破棄
Set objAccess = Nothing

http://www.happy2-island.com/vbs/cafe02/capter00506.shtml

id:qwst

うすうす何か次元の違うところではまっている気がしていました。

「DoCmdはAccessアプリケーションのオブジェクト」で目が覚める思いです。

また完全なコードで感謝します。

2009/04/11 09:18:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません