Быстрый способ запроса listobject vba - PullRequest
0 голосов
/ 29 июня 2018

Я использую Excel 2016 и мне нужно получить значение из объекта списка. Есть несколько столбцов. Например, три, и мне нужно получить значение в column1, где column2 = что-то, column3 = что-то. Как я могу сделать это быстро?

1 Ответ

0 голосов
/ 29 июня 2018

Если вы хотите использовать синтаксис и скорость SQL в VBA, вам нужно использовать соединитель ADO DB. По моему опыту, это было в 4 раза быстрее, чем использование собственных функций Excel для поиска данных.

Это длинная тема, требующая прочтения нескольких статей. Гораздо больше информации, чем должно поместиться в одном SO сообщении.

Вот пример статьи: https://technet.microsoft.com/en-us/library/ee692882.aspx

Вот код из этого примера:

On Error Resume Next

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\Scripts\Test.xls;" & _
        "Extended Properties=""Excel 8.0;HDR=Yes;"";" 

objRecordset.Open "Select * FROM [Sheet1$] Where Number = 2", _
    objConnection, adOpenStatic, adLockOptimistic, adCmdText

Do Until objRecordset.EOF
    Wscript.Echo objRecordset.Fields.Item("Name"), _
        objRecordset.Fields.Item("Number")
    objRecordset.MoveNext
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...