プロが教える店舗&オフィスのセキュリティ対策術

現在AccessのテーブルをExcelへエクスポートする処理を書いています。
内容は以下のとおりです。
・エクスポート先のExcelファイルは新規のものではなく既存のファイルを使用
・エクスポートする際、以前エクスポートした分のシートを削除してから転送させたい

下記のようなコードを書きましたが実行してみると前回エクスポートした分のシートは削除されておらず
今回エクスポートしたものが追加されているという状況です。
●エクスポート先Excelファイル名:エクセルファイル.xls
●エクスポートするテーブル名(Excelではシート名):転送テーブル

Set xlsApp = CreateObject("Excel.Application")
Set wkBook = xlsApp.Workbooks.Open("C\エクセルファイル.xls")

wkb.Application.DisplayAlerts = False
wkBook.Worksheets("転送テーブル").Activate
wkBook.Worksheets("転送テーブル").Delete
wkBook.Save
wkBook.Close
wkb.Application.DisplayAlerts = True

Set xlsApp = Nothing
Set wkBook = Nothing

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "エクセルファイル.xls", FullPath

どうぞよろしくお願い致しますm<_ _>m

A 回答 (1件)

ところどころ変なところがありましたが、大きな変更無く、下記コードをAccessの標準モジュールに置いて実行すると、目的シートの削除ができました。

DoCmdの方は試してありませんが、ご参考まで。当方Access2000です。
Sub test()
Dim xlsApp As Object, wkBook As Object
Set xlsApp = CreateObject("Excel.Application")
Set wkBook = xlsApp.Workbooks.Open("C:\エクセルファイル.xls")

xlsApp.DisplayAlerts = False
wkBook.Worksheets("転送テーブル").Activate
wkBook.Worksheets("転送テーブル").Delete
wkBook.Save
wkBook.Close
xlsApp.DisplayAlerts = True

Set wkBook = Nothing
Set xlsApp = Nothing
End Sub
    • good
    • 0
この回答へのお礼

mitarashi様、どうもありがとうございました!!!
教えていただいたとおりにやってみるとすんなり目的の動作をしてくれました(TT)

メッセージを非表示にする
xlsApp.DisplayAlerts = False
をwkb.Application.DisplayAlerts = False
としていたのが致命的な間違いだったようです。

これは自分だけでは気づくことが出来なかったと思います。
本当にありがとうございました。

お礼日時:2009/06/14 19:53

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

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