我在Access中有一个表我正在导出到Excel,我正在使用VBA代码进行导出(因为每次client_id更改时我实际创建一个单独的Excel文件,创建150个文件)。不幸的是,当我使用DoCmd.TransferSpreadsheet执行此操作时,我失去了前导零。我能够通过循环记录并一次写一个单元格来解决这个问题(并在写入之前格式化单元格)。不幸的是,这会导致8小时的运行时间。使用DoCmd.TransferSpreadsheet,它在一小时内运行(但后来我失去了前导零)。有没有办法告诉Excel在使用TransferSpreadsheet命令时将每个单元格视为文本?任何人都可以想到另一种不需要8小时的方法吗?谢谢!
答案 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)
如果您:
怎么办?如果要让人类阅读Excel数据,您可以获得创意,例如隐藏数据列,添加引用数据列的“显示”列,但删除“x”。