none
Access2003:TransferSpreadsheetで作成したテーブルを引数に指定するとエラーが発生します RRS feed

  • 質問

  • 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

    2014年2月23日 17:07