0

アクセスから Excel へのエクスポートが遅い場合と同様のパフォーマンスの問題があり、ループする個々のセル値を設定してデータを MS Excel にエクスポートします。

objSheet.Cells(table_1_row_no + intcounter, table_1_colA_col_no) = table_1_array(intcounter, 0)

ただし、私のデータは配列から取得され、そこに転送した後にExcelで処理する必要があるため、データを転送した後に作業するシートを開く必要があります。その結果、上記の投稿に記載されている方法はどれも理想的に適しているようには見えません。

私は、データベースからデータを取得する MS アクセス アプリケーションを使用しており、データを Excel に入れる前に vba でデータをかなり処理しています。その結果、転送されるデータはレコードセットではなく配列になります。レコードセットに戻して .CopyFromRecordset メソッドを使用できるようにする最も簡単な方法は、一時テーブルとレコードセットを作成することですが、他に良い方法がない限り、かなり長い道のりになります。

Access が結果を取得する前に、スプレッドシートは長い計算を行います。これにより、エンジニアがさまざまな状況で必要な調整を行うために柔軟に使用できるようになるため、これを Excel に残すことに熱心です (環境は制御されているため、許可されていない変更は問題になりません)。結果として、csv や Excel ファイルを開かずにドロップアウトするオプションも適切ではありません。

どんな提案でも大歓迎です。

4

1 に答える 1

0

同じ問題が発生しました。データ ソースをレコードセットに変換してみてください。EXCEL 2000、2002、2003、または 2007 を使用している場合は、CopyFromRecordset を使用します。

'Copy the recordset to excel sheet we  start in cell A1
 sheet1.Cells(1, 1).CopyFromRecordset rst

レコードセットに OLE オブジェクト フィールドまたは階層レコードセットなどの配列データが含まれている場合、CopyFromRecordset は失敗することに注意してください。

于 2012-11-19T21:31:16.383 に答える