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

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

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

如在;

0001 'Excel treats as number and strips leading zeros 

 '0001 'Excel treats as text 

您可能需要创build一个expression式字段来在字段前加上撇号,如:

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

作为我的其他build议的替代方法,你玩过Excel的导入外部数据命令? 使用Access VBA,您可以循环遍历客户端,打开模板Excel文件,以客户端的数据作为条件导入数据(例如,拉取而非推送),并为每个客户端保存唯一的名称。

如果你:

  1. 在源表中,将列types更改为string。
  2. 循环访问您的源表,并在该字段中添加一个“x”。

如果Excel数据是要被人读取的,你可以变得有创意,比如隐藏你的数据列,添加引用数据列的“显示”列,但是删除“x”。