Метод QueryTables.Add (Excel)
Создает таблицу запросов.
Синтаксис
expression. Add (Connection, Destination, Sql)
Выражение Переменная, представляющая объект QueryTables .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Connection | Обязательный | Variant | Источник данных для таблицы запросов. Допустимые значения:
|
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 и обратная связь.