プロが教えるわが家の防犯対策術!

よろしくお願いします。

ACCESS VBA を使用して、既存のEXCELファイルにデータを出力しているのですが、すごく時間がかかってしまいます。件数が少ない時はそれほど気にならないのですが。時間短縮する方法を教えてください。


Sub S_ExportExcel_ADO()
Dim CN As ADODB.Connection
Dim rst As ADODB.Recordset
Dim objExcel As Excel.Application
Dim i As Integer
Dim W_SQL As String
On Error GoTo Err_S_ExportExcel_ADO

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("test.xls")
objExcel.Worksheets("sheet1").Select

Set CN = CurrentProject.Connection
Set rst = New ADODB.Recordset

W_SQL = "SELECT * FROM データ"
rst.Open W_SQL, CN, adOpenKeyset, adLockReadOnly

i = 1
Do Until rst.EOF
objExcel.Cells(i, 4) = Trim("" & rst![データ1])
objExcel.Cells(i, 5) = Trim("" & rst![データ2])
objExcel.Cells(i, 6) = Trim("" & rst![データ3])
objExcel.Cells(i, 7) = Trim("" & rst![データ4])
objExcel.Cells(i, 9) = Trim("" & rst![データ5])
'***省略***
objExcel.Cells(i, 35) = Trim("" & rst![データ15])
objExcel.Cells(i, 36) = Trim("" & rst![データ16])
i = i + 1

rst.MoveNext
Loop


'EXCEL保存
objExcel.ActiveWorkbook.Close
objExcel.Quit
rst.Close
CN.Close

Set rst = Nothing
Set CN = Nothing
Set objExcel = Nothing


End Sub

A 回答 (2件)

履歴です。


#1のtodo36さんの発言
http://okweb.jp/kotaeru.php3?q=475151
    • good
    • 0
この回答へのお礼

お回答ありがとうございます。配列を使って貼り付けることにしました。とても処理が早くなりました。ありがとうございます。

お礼日時:2005/10/06 11:41

Accessのマクロでワークシート変換(Excel形式でのエクスポート)を行うか、Excelの外部データの取り込み>データベースクエリで、Excelファイルにデータをとりこんでみては。


ビルトイン機能なので、VBAよりは処理速度が速いので。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。追加質問で申し訳ないのですが、既存のシートにデータを置きたいのですが、できるのでしょうか?

お礼日時:2005/10/05 13:42

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

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


このQ&Aを見た人がよく見るQ&A