【发布时间】:2010-04-15 16:31:20
【问题描述】:
我想自动将 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 中使用“导入外部数据”。
编辑
响应cmets和迄今为止的响应:
您可以导出包含备注字段的表格吗?
我没有尝试导出表格,因为这样做对我没有帮助。
...截断备忘录的事情之一,例如对其进行排序
查询确实包含 ORDER BY 子句,因此结果已排序(并且必须排序)。但它没有在备忘录列上排序。
可以通过使用 Left(MyMemo, 4096) 之类的方法处理备忘录来避免这种情况。
查询中的备注列已使用“Left(Replace(MemoColumn, "...", "..."), 512)”之类的内容进行处理并截断为 512 个字符。所以使用 Left(...) 似乎没有帮助。
尝试使用 copyfromrecordset 函数实现自动化
我已尝试将 Excel 自动化与 Range.CopyFromRecordSet 结合使用。在这种情况下,较长的备注字段不会被截断,而是在最后导出一些乱码。
【问题讨论】:
-
能否导出包含备注字段的表格?我问,因为查询中的备忘录字段截断是一个常见问题,如果备忘录在表导出中被截断,那就是另一个问题了。
-
如果备忘录有 512 个字符的限制,请查看是否可以将其转换为查询中的字符串列并尝试将其导出。在此处发布您的发现。
-
只有在您执行截断备忘录的操作之一(例如对其进行排序)时,才会在查询中截断备忘录。可以通过使用 Left(MyMemo, 4096) 之类的方法处理备忘录来避免这种情况。
标签: excel ms-access export-to-excel