Запрос листа Excel в MS-Access VBA (с использованием набора записей ADODB) - PullRequest
8 голосов
/ 18 января 2010

Я хотел бы запросить лист 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

Ответы [ 2 ]

5 голосов
/ 18 января 2010

В строке подключения вы говорите

 Excel 8.0;HDR=Yes

Это означает, что первая строка будет рассматриваться как заголовок, независимо от того, что он содержит. Если вы хотите использовать F1, F2 и т. Д., Скажем

Excel 8.0;HDR=No
3 голосов
/ 18 января 2010

Поскольку у вас есть опция HDR=Yes, имя столбца должно быть данными в первой строке.

http://support.microsoft.com/kb/316934

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...