2012-03-22 146 views
0

我试图从en excel文件读取数据以将它们插入表中。 我有一个一般格式的专栏,它可以包含任何东西。测试validaty是由代码完成的。我的问题是当我读取整数/双精度,例如23时,它被转换为1900-01-22,这在我的情况下不是逻辑。 的follwing是我的代码从Excel在VBA中防止日期转换

Dim rsExcel As Object 
Set cnnExcel = CreateObject("ADODB.Connection") 
Set rsExcel = CreateObject("ADODB.RecordSet") 
With cnnExcel 
    .Provider = "Microsoft.Jet.OLEDB.4.0" 
    .ConnectionString = "Data Source=D:\Query1.xls;Extended Properties=Excel 8.0" 
    .CursorLocation = 3 
    .Open 
End With  
rsExcel.Open "SELECT * FROM [Sheet 1$]", cnnExcel 
' to read the column 
rsExcel.Fields(3).Value 

连接,并读取有什么办法防止这种自动转换

谢谢您的帮助

+0

尝试添加“数据源= D:\ Query1.xls;扩展属性= Excel 8.0; IMEX = 1” – 2012-03-22 10:04:51

+0

感谢您的回答,我实际上添加了该属性但没有帮助 – 2012-03-22 10:13:13

回答

0

使用Value2属性,而不是Value尝试。 Value2忽略货币和日期数据类型,即没有任何格式。

+0

我不认为有一个方法称为Value2! – 2012-03-22 09:45:00

+0

@ Bes-mM-bes是的,你是对的,我的错误。 “Value2”只存在于Excel中,而您正在使用工作表中的记录集。出于兴趣,你为什么要这样做?对于我来说,没有任何意义,当你只能阅读工作表时,为什么要将工作表解析为记录集。 – markblandford 2012-03-22 09:50:00

+0

是的,你是对的!我需要的是阅读excel文件不多不少,但如果我使用objWorksheet.Cells(1,1)。问题,这是如此紧密的列的顺序,其中rsExcel.Fields(“columnName”) .Value直接进入“columnName”列的索引不成问题。 – 2012-03-22 10:02:41