|
ExcelのVBAでAccessの既存テーブルにデータをインポートし、さらにイベントプロシージャをExcelから直接実行し最終的に作成したクエリをExcelの既存ファイルにエクスポートしたいのですが、Accessのイベントプロシージャ内のエクスポートの構文でエラーが発生します。エラーメッセージは「実行時エラー'3010':テーブル'Q_jyufuk'は既に存在しています。」です。
以下にソースを書きます。
【Excel側】
Sub DataExport()
Dim ObjAccess As Access.Application
Dim filename As String
Dim stFilePass As String 'A.xlsのPath
Dim MySql As String
'Accessを開く
Set ObjAccess = CreateObject("Access.Application")
ObjAccess.OpenCurrentDatabase FilePass10, False
ObjAccess.Visible = True
'ExcelDataをAccessテーブルへインポート
ObjAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_Copy", _
FilePass6, True, _
"Import_Area"
ObjAccess.Run "ReCount"
Set ObjAccess = Nothing
End Sub
【Access側】
Option Compare Database
Option Explicit
Public MyFilePass As String 'エクスポート先のフルパス
Sub ReCount()
Dim db As DAO.Database
Dim qe As DAO.QueryDef
Dim MySql As String
Dim df As String
Dim txt_pass As String 'A.xlsのファイルが存在するフォルダ名取得
Dim Mcount As Integer
Set db = CurrentDb()
'シリアルNO重複データ抽出のSQL文
MySql = "SELECT sechi1,Count(sechi1) AS カウント " _
& "FROM T_Copy " _
& "GROUP BY sechi1 HAVING ((Count(sechi1) >= 2))"
'SQL文をもとに選択クエリを作成
Set qe = db.CreateQueryDef("Q_Count", MySql)
'重複データのID抽出のためのSQL文
MySql = "SELECT Q_Count.sechi1,T_Copy.tranzak " _
& "FROM Q_Count " _
& "INNER JOIN T_Copy ON Q_Count.sechi1 = T_Copy.sechi1 " _
& "ORDER BY Q_Count.sechi1"
'SQL文をもとに選択クエリを作成
Set qe = db.CreateQueryDef("Q_jyufuk", MySql)
df = ComdlgGetFolderStr("ファイルの読込/保存をするフォルダを指定してください。")
txt_pass = df
MyFilePass = txt_pass & "\" & "A.xls"
'重複データのエクスポート
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_jyufuk", MyFilePass, True
'T_Copyのデータ削除のSQL文
MySql = "DELETE * FROM T_Copy"
db.Execute MySql
'作成したクエリを削除
DoCmd.DeleteObject acQuery, "Q_Count"
DoCmd.DeleteObject acQuery, "Q_jyufuk"
db.Close: Set db = Nothing
End Sub
上記のようにソースを書いたのですが「'重複データのエクスポート」の構文でエラーメッセージが出ます。
Access単独だと問題なく動きます。
ネットや教本で調べましたがわかりませんでした。
どなたかわかる方、ご教授ください。
よろしくお願いします。
|
|