Access2003または2010でTransferSpreadsheetにてExcelエクスポートを行う際にエラーが発生します。
原因と対策をご存じの方がいたらアドバイス頂けると幸いです。
【 環境 】
Access2003
SQL Server2005
【 状況 】
TransferSpreadsheet実行前のプログラム中でテーブルを作成し、そのテーブルを引数にして実行するとエラーが発生する。
< エラーメッセージ >
「実行時エラー'7874' オブジェクト'#売上一時テーブル1'を見つけることができません」
【 補足 】
・Accessで作成したADPにて処理
・一時テーブルではなくテーブルで試しても同エラーが発生する
・既に作成済みビューのビュー名指定では同エラーが発生する
・既に作成済みテーブルであればエラー発生せずExcelへの出力が正常に行える
・TransferSpreadsheetではなくOutputToに置き換えればエラー発生せずExcelへの出力が正常に行える
(OutputToで出力されるExcelに書式設定がされる仕様回避のためTransferSpreadsheetに置き換える手法を検討しています)
・デバックにてTransferSpreadsheet実行前に作成したテーブルの存在はSQL Server、Access両方で確認済み
・一時テーブルの場合エラーが発生して、デバックに入った状態で再度処理を再開してもエラーが発生するが、
テーブルで処理を行った場合、エラー発生してデバック入った状態での再開処理でエラー発生せずExcelも出力される
【 プログラム 】
Private Sub bbb()
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim tablename As String
Set rs = New ADODB.Recordset
Set cn = CurrentProject.Connection
cn.BeginTrans
tablename = "#売上一時テーブル"
「みビューです
DoCmd.RunSQL "SELECT * INTO " & tablename & " FROM q_客先別売上明細表"
rs.Open tablename, cn, adOpenKeyset, adLockOptimistic
rs.MoveFirst
MsgBox rs.Fields.count 'この時点で取得したレコードセットのフィールド数を正しく出力します
Dim strpath As String
strpath = "C:\Users\(省略)\Desktop\2013年2月 売上明細表.xlsx"
DoCmd.TransferSpreadsheet acExport, 10, tablename, strpath, False
'以下のOutputToに置き換えた場合は正常に処理されます(Excelに出力される)
'DoCmd.OutputTo acOutputTable, tablename, "Excelブック(*.xlsx)", strpath, False
End Sub