我正在尝试更新Excel 2003电子表格中的单元格,但我遇到的问题是Excel在我的值的前面添加了单引号。有没有办法以整数形式输入值而不是转义字符串?
谢谢!
Const filePath = "C:\1.xls"
Dim ado: Set ado = CreateObject("ADODB.Connection")
ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
& filePath & """;Extended Properties=""Excel 8.0;HDR=No"";"
ado.CursorLocation = 3
ado.Open
ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = 1;"
ado.Close
以上代码将单元格A1更新为'1
答案 0 :(得分:2)
我猜测combination of registry values and existing data导致列的数据类型被视为文本。请注意,当使用ACE / Jet的OLE DB提供程序时,Excel只有一种数字类型,即FLOAT
(双精度)。
要发现所考虑的数据类型,请尝试运行:
Const filePath = "C:\1.xls"
Dim ado: Set ado = CreateObject("ADODB.Connection")
ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
& filePath & """;Extended Properties=""Excel 8.0;HDR=No"";"
ado.CursorLocation = 3
ado.Open
Dim rs
Set rs = ado.Execute("SELECT DISTINCT TYPENAME(F1) FROM [Sheet1$A1:A1];")
MsgBox rs.GetString
ado.Close
答案 1 :(得分:2)
我已经设法通过Alex K和onedaywhen的提示来解决这个问题。
解决方法是在运行我的脚本之前,使用正确的类型(数字,自定义等)简单地格式化我想要更新的Excel单元格。
奇怪的是,我确信我几天前尝试了这个并且没有用......但我想它一定是在当天晚了!