我正在使用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-引用一个现有表,该表包含与第一个数据相同的格式/数据类型的数据

最佳答案

我知道这是一个较晚的答案,但是我遇到了同样的错误。我想我已经找到了解决方法。

看来Excel期望范围是左上角的单元格,而不是单元格的范围。因此,只需将您的语句修改为Range(tblName).Cells(1,1).CopyFromRecordset rst

'Delete old data and copy the recordset to the table
Me.ListObjects(tblName).DataBodyRange.ClearContents
Me.Range(tblName).Cells(1,1).CopyFromRecordset rst

似乎还要求目标工作表处于事件状态,因此您可能必须确保该工作表首先处于事件状态,然后再更改回先前的事件工作表。这可能已在更高版本的Excel中修复。

10-07 20:00