3: With ActiveSheet.QueryTables.Add(Connection:= _
4: "FINDER;C:\WINDOWS\Application _
Data\Microsoft\Запросы\Цена.dqy", Destination _
:=Range("A1"))
5: .Name = "Цена"
6: .FieldNames = True
7: .RowNumbers = False
8: .FillAdjacentFormulas = False
9: .PreserveFormatting = True
10: .RefreshOnFileOpen = False
11: .BackgroundQuery = True
12: .RefreshStyle = xlInsertDeleteCells
13: .SavePassword = True
14: .SaveData = True
15: .AdjustColumnWidth = True
16: .RefreshPeriod = 0
17: .PreserveColumnInfo = True
18: .Refresh BackgroundQuery:=False
19: End With
20: End Sub
Основное отличие этой процедуры от процедуры ПримерMSQuery заключается в применяемом методе Add. В данной процедуре в этом методе указывается информация для связи с файлом запроса, а не с файлом базы данных. Кроме того, в процедуре Цена не задаются значения свойства CommandText (они хранятся в файле запроса). Как видите, эта процедура значительно проще процедуры ПримерMSQuery. Но она имеет и недостаток: здесь нельзя во время выполнения процедуры ввести ограничения на извлекаемые данные. Но если в вашем приложении надо часто выполнять стандартный запрос, не требующий вмешательства пользователя, то подход с применением сохраненного запроса, вполне себя оправдывает.
Резюме
Теперь вы знаете две технологии извлечения данных из внешних источников: в предыдущем 19-м часе мы изучали сводные таблицы, которые также можно использовать для получения доступа к внешним данным, а в этом часе рассмотрели возможности средства MS Query по извлечению данных из внешних баз данных. Обе эти технологии позволяют записывать макросы, что значительно облегчает труд разработчиков приложений Excel.
В следующем часе мы изучим способ организации доступа к внешним данным с помощью ADO. Эта технология самая эффективная и гибкая среди всех аналогичных технологий, рассматриваемых в этой книге.