.Cells VBA参考问题

我在下面这个VBA被devise成遍历每个WS并插入每个数据集的前4行。

这在一个很好的工作,但只能让我指定一张,而不是通过他们所有。 我拿了出来,得到“无效或不合格的参考”。 在此之后,我添加了ActiveSheet。 到“细胞”方法。

现在我得到这个错误如下:

“ODBC驱动程序不支持所请求的属性”

我现在有资格获得细胞信息了吗? 还是有其他的select? 我正在使用Excel 2010和MySQL。

Public Function InsertData() Dim rs As ADODB.Recordset Dim oConn As ADODB.Connection Dim WS As Worksheet Dim strsql As String Set rs = New ADODB.Recordset Set oConn = New ADODB.Connection oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ "SERVER=server.host.com;" & _ "DATABASE=datatime;" & _ "USER=boulders;" & _ "PASSWORD=rocks;" & _ "Option=3" For Each WS In ActiveWorkbook.Worksheets For rowcursor = 4 To 8 strsql = "INSERT INTO workflow_metrics (id, code) " & _ "VALUES (" & (ActiveSheet.Cells(rowcursor, 1)) & "," & _ "'" & (ActiveSheet.Cells(rowcursor, 2)) & "')" rs.Open strsql, oConn, adOpenDynamic, adLockOptimistic Next Next WS End Function 

我想你想要:

 Param1.Value = WS.Cells(rowcursor, 1) 

等等

我现在有资格获得细胞信息了吗? 还是有其他的select?

这不是问题。 问题是你试图使用数据修改查询( INSERT )打开一个logging集( rs.open )。

对于DML,您希望使用ADODB.Command.Execute 。

另外,如果您没有对电子表格中的值进行控制,那么您最多只能进行一次SQL注入攻击。 您应该使用参数化查询。

  Dim Cmd As ADODB.Command Set Cmd = New ADODB.Command Cmd.ActiveConnection = oConn Cmd.CommandText = "INSERT INTO workflow_metrics (id, code) VALUES (?,?)" Set Param1 = Cmd.CreateParameter(, adInteger, adParamInput, 5) Set Param2 = Cmd.CreateParameter(, adInteger, adParamInput, 5) For Each WS In ActiveWorkbook.Worksheets For rowcursor = 4 To 8 Param1.Value = WS.Cells(rowcursor, 1) 'As Doug Glancy this should be WS not ActiveSheet' Param2.Value = WS.Cells(rowcursor, 2) cmd1.Execute Next Next WS