【发布时间】:2013-04-10 19:43:24
【问题描述】:
我正在使用CopyFromRecordset 方法从ADODB 记录集中更新一个excel 表。
更新后,只要有数字列,数字就会显示为日期。
到目前为止,我使用的解决方法是通过 VBA 将列格式化回数字,但这不是一个好的解决方案,因为报告需要更多时间才能完成。我还必须编写代码来容纳很多表。
有没有快速解决办法?非常感谢任何帮助。
'Delete old data and copy the recordset to the table
Me.ListObjects(tblName).DataBodyRange.ClearContents
Me.Range(tblName).CopyFromRecordset rst
tblName - 指一个现有的表,该表包含与第一个数据相同格式/数据类型的数据
【问题讨论】:
-
在使用
CopyFromRecordset导出数据之前尝试此Me.Range(tblName).Columns(1).Numberformat = "0"其中1例如是存储数字的相关列。 -
我目前正在对数据导入后的每个数字列(或可能的列范围)执行此操作。在导入之前这样做只会改变时间,但不能解决问题。我仍然需要编写代码来修复每个表中的每个数字列。我希望表格保持导入前的格式。
-
ADODB 记录集中没有“格式”,只有数据类型。您可以更改代码以根据列 ADODB 数据类型自动设置 Excel 格式,但 ADODB 数据集中没有固有的格式 - 查看其中的所有属性。
-
@ElectricLlama “格式”是指现有 Excel 表中的列格式。我指的不是 ADODB 记录集中字段的数据类型。例如,在执行 copyFromRecordset 后,excel 表中数字格式的列变成日期格式的列。