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 を使用してみました。この場合、長いメモ型フィールドは切り捨てられず、最後にいくつかの不要な文字を付けてエクスポートされます。