将数据从Access导出到Excel而不会丢失前导零

时间:2010-07-02 13:42:58

标签: excel ms-access vba

我在Access中有一个表我正在导出到Excel,我正在使用VBA代码进行导出(因为每次client_id更改时我实际创建一个单独的Excel文件,创建150个文件)。不幸的是,当我使用DoCmd.TransferSpreadsheet执行此操作时,我失去了前导零。我能够通过循环记录并一次写一个单元格来解决这个问题(并在写入之前格式化单元格)。不幸的是,这会导致8小时的运行时间。使用DoCmd.TransferSpreadsheet,它在一小时内运行(但后来我失去了前导零)。有没有办法告诉Excel在使用TransferSpreadsheet命令时将每个单元格视为文本?任何人都可以想到另一种不需要8小时的方法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

作为我的其他建议的替代方法,您是否使用过Excel外部数据命令?使用Access VBA,您可以循环访问客户端,打开模板Excel文件,以客户端为条件导入数据(即拉取而不是推送),并使用每个客户端的唯一名称保存它。

答案 1 :(得分:1)

使用撇号(')字符作为Excel值的前缀。撇号告诉Excel将数据视为“文本”。

如同;

0001 'Excel treats as number and strips leading zeros

成为

'0001 'Excel treats as text

您可能需要创建一个表达式字段,以使用撇号为字段添加前缀,如;

SELECT "'" & [FIELD] FROM [TABLE]

答案 2 :(得分:0)

如果您:

怎么办?
  1. 在源表中,将列类型更改为字符串。
  2. 遍历您的源表并在该字段中添加“x”。
  3. 如果要让人类阅读Excel数据,您可以获得创意,例如隐藏数据列,添加引用数据列的“显示”列,但删除“x”。