Я хотел бы запросить рабочий лист Excel в VBA и указать условия.
Простой запрос "SELECT * FROM [PCR$]"
работы отлично, но я не знаю, как добавить оператор Where.
Я попробовал cmd2.CommandText = "SELECT * FROM [PCR$] WHERE ([B1] IS NOT NULL)"
но затем это жалуется на недостающие параметры.
Это - полный код:
Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String
strFile = fncOpenFile
If strFile = "" Then Exit Sub
With cnn2
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & strFile & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [PCR$]"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic
rs2.Open cmd2
В вашей строке подключения вы говорите
Excel 8.0;HDR=Yes
, что означает, что первая строка будет рассматриваться как заголовок, независимо от того, что он содержит. Если вы хотите использовать F1, F2 и т. Д., Скажите
Excel 8.0;HDR=No
Поскольку у вас есть параметр HDR = YES
, имя столбца должно быть данными в первой строке.