为什么ADODB.RecordSet中的整数在写入Excel电子表格时会转换为日期
我正在使用Excel 2010 我使用VBA从MySQL数据库填充为什么ADODB.RecordSet中的整数在写入Excel电子表格时会转换为日期,excel,vba,Excel,Vba,我正在使用Excel 2010 我使用VBA从MySQL数据库填充ADODB.RecordSet,然后将记录集的结果写入工作表中的一系列单元格。工作表中的所有单元格都使用“常规”格式 记录集中有两个整型字段 在写入工作表时,如果我只包含起始单元格(如下面的代码所示),则一切都会按预期工作,并且所有整数值都会正确写入工作表 从数据库读取并写入工作表的代码如下: SqlString = "SELECT * FROM ......" Set Connection = New ADODB.Connec
ADODB.RecordSet
,然后将记录集的结果写入工作表中的一系列单元格。工作表中的所有单元格都使用“常规”格式
记录集中有两个整型字段
在写入工作表时,如果我只包含起始单元格(如下面的代码所示),则一切都会按预期工作,并且所有整数值都会正确写入工作表
从数据库读取并写入工作表的代码如下:
SqlString = "SELECT * FROM ......"
Set Connection = New ADODB.Connection
Connection.Open ConnectionString
Set Recordset = New ADODB.Recordset
With Recordset
.CursorLocation = adUseClient
.CursorType = adOpenForwardOnly
.LockType = adLockBatchOptimistic
.Open SQLString, Connection
.ActiveConnection = Nothing
End With
With Sheet11
.Range("AD33:AM47").Clear
.Range("AD33").CopyFromRecordset Recordset
End With
但是,如果在将记录集写入工作表时包含完整范围,则包含整数值的单元格格式将转换为日期,即使我在宏中专门设置了单元格格式。
本例中的代码为:
[...]
With Sheet11
.Range("AD33:AM47").Clear
.Range("AG33:AG47").NumberFormat = "General"
.Range("AI33:AI47").NumberFormat = "General"
.Range("AD33:AM47").CopyFromRecordset Recordset
End With
这导致日期为'01/01/1900'+实际整数显示在工作表的单元格中,我希望在其中看到整数
例如:
- 整数=10
- 格式化单元格包含
10/01/1900
是什么原因导致了这种重新格式化?我不知道这会解决问题,但在删除记录之前,请尝试将格式设置为“@”,而不是常规格式。我在excel中做了很多ADODB工作,但我只看到它将记录作为文本输入,所以我在这里不知所措。谢谢您的输入,但恐怕没有什么乐趣。到目前为止,这些单元格仍在重新格式化。很有趣。我建议您在打开“本地人”窗口的情况下运行此命令,并逐步查看哪一行正在更改格式类型。另外,如果你知道你在用数字,出于好奇,为什么要用“一般”呢?