Поделиться через


Метод QueryTables.Add (Excel)

Создает таблицу запросов.

Синтаксис

expression. Add (Connection, Destination, Sql)

Выражение Переменная, представляющая объект QueryTables .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Connection Обязательный Variant Источник данных для таблицы запросов. Допустимые значения:
  • Строка, содержащая строку подключения OLE DB или ODBC. Строка подключения ODBC имеет форму ODBC;<connection string>.
  • Объект QueryTable , из которого изначально копируются сведения запроса, включая строку подключения и текст SQL, но не включая диапазон назначения . Указание объекта QueryTable приводит к тому, что аргумент SQL игнорируется.
  • Объект ADO или DAO Recordset . Данные считываются из набора записей ADO или DAO. Microsoft Excel сохраняет набор записей до тех пор, пока таблица запросов не будет удалена или подключение не изменится. Результирующая таблица запросов не может быть изменена.
  • Веб-запрос. Строка в форме URL;<url> , где URL; является обязательным, но не локализована, а остальная часть строки используется для URL-адреса веб-запроса.
  • Средство поиска данных. Строка в форме FINDER;<data finder file path> , где FINDER; требуется, но не локализована. Остальная часть строки — это путь и имя файла средства поиска данных (*.dqy или *.iqy). Файл считывается при выполнении метода Add ; последующие вызовы свойства Connection таблицы запросов будут возвращать строки, начинающиеся с ODBC; или URL; соответствующим образом.
  • Текстовый файл. Строка в форме TEXT;<text file path and name> , где TEXT; требуется, но не локализована.
Destination Обязательный Range Ячейка в левом верхнем углу диапазона назначения таблицы запросов (диапазон, в котором будет размещена результирующая таблица запроса). Целевой диапазон должен находиться на листе, который содержит объект QueryTables, заданный выражением.
Sql Необязательный Variant Строка SQL-запроса, выполняемая в источнике данных ODBC. Этот аргумент необязателен, если вы используете источник данных ODBC (если вы не указали его здесь, его следует задать с помощью свойства Sql таблицы запросов перед обновлением таблицы). Этот аргумент нельзя использовать, если в качестве источника данных указан объект QueryTable , текстовый файл или объект ADO или DAO Recordset .

Возвращаемое значение

Объект QueryTable , представляющий новую таблицу запросов.

Замечания

Запрос, созданный этим методом, не выполняется до вызова метода Refresh .

Пример

В этом примере создается таблица запросов на основе набора записей ADO. В этом примере сохраняются существующие параметры сортировки и фильтрации столбцов, а также сведения о макете для обратной совместимости.

Dim cnnConnect As ADODB.Connection 
Dim rstRecordset As ADODB.Recordset 
 
Set cnnConnect = New ADODB.Connection 
cnnConnect.Open "Provider=SQLOLEDB;" & _ 
    "Data Source=srvdata;" & _ 
    "User ID=testac;Password=4me2no;" 
 
Set rstRecordset = New ADODB.Recordset 
rstRecordset.Open _ 
    Source:="Select Name, Quantity, Price From Products", _ 
    ActiveConnection:=cnnConnect, _ 
    CursorType:=adOpenDynamic, _ 
    LockType:=adLockReadOnly, _ 
    Options:=adCmdText 
 
With ActiveSheet.QueryTables.Add( _ 
        Connection:=rstRecordset, _ 
        Destination:=Range("A1")) 
    .Name = "Contact List" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .Refresh BackgroundQuery:=False 
End With

Этот пример импортирует текстовый файл фиксированной ширины в новую таблицу запросов. Первый столбец в текстовом файле имеет пять символов в ширину и импортируется как текст. Второй столбец имеет четыре символа в ширину и пропускается. Остальная часть текстового файла импортируется в третий столбец и имеет к нему общий формат.

Set shFirstQtr = Workbooks(1).Worksheets(1) 
Set qtQtrResults = shFirstQtr.QueryTables.Add( _ 
    Connection := "TEXT;C:\My Documents\19980331.txt", 
    Destination := shFirstQtr.Cells(1,1)) 
With qtQtrResults 
    .TextFileParsingType = xlFixedWidth 
    .TextFileFixedColumnWidths := Array(5,4) 
    .TextFileColumnDataTypes := _ 
        Array(xlTextFormat, xlSkipColumn, xlGeneralFormat) 
    .Refresh 
End With

В этом примере создается новая таблица запросов на активном листе.

sqlstring = "select 96Sales.totals from 96Sales where profit < 5" 
connstring = _ 
    "ODBC;DSN=96SalesData;UID=Rep21;PWD=NUyHwYQI;Database=96Sales" 
With ActiveSheet.QueryTables.Add(Connection:=connstring, _ 
        Destination:=Range("B1"), Sql:=sqlstring) 
    .Refresh 
End With

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.