0

Access クエリの結果を Excel に自動的にエクスポートしたいと考えています。私の環境は次のとおりです。

  • アクセス 2007
  • Access 2003 形式のデータベース
  • エクスポートは Excel 2003 形式である必要があります。

クエリには、最大 512 文字を含むことができるメモ列が含まれます。

これまでのところ、次のことを試しました。

  • Access でクエリを実行し、結果グリッドをコピーして Excel に貼り付けます。これは正常に機能しますが、手動の手順が必要です。

  • 次のように、DoCmd.TransferSpreadsheet を使用してクエリをエクスポートする VBA コードを実行します。

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MyQuery", "MyFile.xls"

私が抱えている問題は、VBA コードがメモ列を 255 文字に切り捨てることです。

この切り捨てを行わずにプログラムで Excel にエクスポートする最も簡単な方法は何ですか?

理想的には、Access から Excel にデータを「プッシュ」したいのですが、その逆ではありません。つまり、Excel 内から「外部データのインポート」を使用しようとはしていません。

編集

これまでのコメントと応答に応じて:

メモ フィールドを含むテーブルをエクスポートできますか?

テーブルのエクスポートは試していません。エクスポートできても役に立たないからです。

...メモを切り捨てるものの1つ、並べ替えなど

クエリには ORDER BY 句が含まれているため、結果並べ替えられます (並べ替える必要があります)。でもメモ欄には並びません。

これは、メモを Left(MyMemo, 4096) のようなもので処理することで回避できます。

クエリのメモ列は既に処理されており、"Left(Replace(MemoColumn, "...", "..."), 512)" などを使用して 512 文字に切り詰められています。したがって、 Left(...) を使用しても役に立たないようです。

copyfromrecordset 関数を使用して自動化を試す

Range.CopyFromRecordSet で Excel Automation を使用してみました。この場合、長いメモ型フィールドは切り捨てられず、最後にいくつかの不要な文字を付けてエクスポートされます。

4

1 に答える 1

0

copyfromrecordset 関数を使用して自動化してみてください。255 文字で問題があったことは覚えていませんが、その制限がまだ存在している可能性があります。 モジュール: 自動化された Excel へのレコードの転送

コードを実行したら、遅延バインディングを使用して Excel 参照を削除することをお勧めします。 Microsoft Access での遅延バインディング

于 2010-04-15T19:07:33.130 に答える