2010-04-15 80 views
0

我想自動將Access查詢的結果導出到Excel。我的環境是:如何自動從Access 2007導出到Excel 2003

  • Access 2007年
  • 數據庫在Access 2003格式
  • 出口應該是在Excel 2003中的格式。

該查詢包含一個Memo列,最多可包含512個字符。

到目前爲止,我已經試過如下:

  • 運行在Access查詢,然後複製/粘貼結果表格到Excel中。這工作正常,但需要手動步驟。

  • 運行一些VBA代碼,出口使用DoCmd.TransferSpreadsheet如下查詢:

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

我的問題是,VBA代碼截斷記錄欄255個字符。

什麼是最簡單的方式編程導出到Excel沒有截斷?

理想情況下,我想將Access中的數據「推」到Excel而不是其他方式,即我沒有試圖在Excel中使用「導入外部數據」。

編輯

在迴應的評論和響應至今:

您可以導出包含備註字段的表?

我還沒有嘗試導出表,因爲能夠這樣做不會幫助我反正。

...那截斷備忘錄,就像它

查詢確實包含一個ORDER BY子句排序的事情之一,所以導致排序(和待排序)。但它沒有在備忘錄欄上排序。

這可以通過處理備忘錄像左(MyMemo,4096)的東西來避免。

查詢中的記錄欄已經被處理,並使用類似 「左(更換(MemoColumn,」 ... 「」 ... 「),512)」 截斷爲512個字符。所以使用左(...)似乎沒有幫助。使用copyfromrecordset功能

我用Excel自動化與Range.CopyFromRecordSet試圖

嘗試自動化。在這種情況下,較長的備註字段不會被截斷,而是會在最後導出一些垃圾字符。

+0

您可以導出包含備註字段的表嗎?我問,因爲在查詢中截斷備註字段是一個常見問題,如果備忘在表導出中被截斷,那是一個不同的問題。 – Fionnuala 2010-04-15 19:06:47

+0

如果備忘錄限制爲512個字符,請查看它是否可以轉換爲查詢中的字符串列並嘗試導出。在此發佈您的發現。 – shahkalpesh 2010-04-15 19:15:21

+0

只有在查詢中才會發生備忘錄截斷,如果您正在執行截斷備忘錄的任務之一(例如對其進行排序)。這可以通過使用像Left(MyMemo,4096)這樣的東西來處理備忘來避免。 – 2010-04-15 19:49:39

回答

0

嘗試使用copyfromrecordset函數自動執行。雖然我不記得任何有255個字符的問題,但限制可能仍然存在。 Modules: Transferring Records to Excel with Automation

一旦你有代碼運行,然後我建議通過使用後期綁定刪除Excel引用。 Late Binding in Microsoft Access

+0

謝謝,我試過CopyRecordset沒有成功 - 請參閱編輯問題。 – Joe 2010-04-16 05:46:59

+0

啊,垃圾字符可能是vbCrLF,而Excel只需要或想要vbCr或類似的東西。我現在不記得細節。 – 2010-04-16 21:00:24

相關問題