Гость
Map
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / QueryTables подключение к файлу Excel и выгрузка данных на лист / 5 сообщений из 5, страница 1 из 1
03.08.2021, 16:19
    #40088280
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QueryTables подключение к файлу Excel и выгрузка данных на лист
Всем доброго времени суток.
Как сделать, что бы через QueryTables можно было получить данные из другой книги/листа?
Есть у кого строка подключения? А то, то что есть в интернете, не пашет...


И ещё вопрос: почему QueryTables не делает Refresh, если у recordset сделать проверку на пустоту? Как это обойти?
...
Рейтинг: 0 / 0
03.08.2021, 16:32
    #40088287
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QueryTables подключение к файлу Excel и выгрузка данных на лист
чтото типа такого?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Dim pth as string = "c:\temp\"
Dim ИзФайла as string = "c:\temp\myfiledatabase.xls"
Dim Where as string = ""  'список выражений `Имя поля` = 'значение' или `Имя поля` BETWEEN 'значение1' and 'значение2'

With Activesheet  'имя листа в считываемой книге должно совпадать с текущим (activesheet.name)
      'выборка данных через MS Query и ODBC-драйвер Excel files.dsn
      'они должны быть установлены в составе MS Office или MDAC 2.8
      conn = "ODBC;Driver={Microsoft Excel Driver (*.xls)};DBQ=" & ИзФайла & _
         ";DefaultDir=" & pth & ";PageTimeout=10"
      sq = "SELECT `" & .Name & "$`.* FROM `" & _
         Left(ИзФайла, Len(ИзФайла) - 4) & "`.`" & .Name & "$` `" & .Name & "$`" 'файл указывать без расширения .xls
      
      'возможен отбор на основе SQL
      If Len(Where) > 0 Then
         sq = sq & " WHERE " & Where
      End If
      
      Set qt = .QueryTables.Add(conn, .Range("A1"), sq)   'шапка таблицы БД грузится в 1ую строку листа
      qt.BackgroundQuery = False
      qt.EnableEditing = False      'не позволять редактировать свойства и структуру запроса
      qt.RefreshOnFileOpen = False  'не обновлять при открытии файла
      qt.FieldNames = True 'в шапку загружать имена полей
      qt.SaveData = False  'не сохранять данные
      qt.Refresh
End With
...
Рейтинг: 0 / 0
03.08.2021, 17:24
    #40088300
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QueryTables подключение к файлу Excel и выгрузка данных на лист
ldfanate, да. А как проверить не вернёт ли запрос пустоту? Или это только через recordset?
Мне в зависимости от этого надо создавать лист или не создавать
...
Рейтинг: 0 / 0
03.08.2021, 19:54
    #40088365
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QueryTables подключение к файлу Excel и выгрузка данных на лист
ldfanate, ещё у меня excel 2010 и 2016
...
Рейтинг: 0 / 0
06.08.2021, 09:04
    #40089067
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QueryTables подключение к файлу Excel и выгрузка данных на лист
авторBlackeAngel,
А как проверить не вернёт ли запрос пустоту?

Так посмотрите проперти объекта QueryTable, там есть свойство, определяющее размер (число строк на листе) который занят результатами запроса, оно же для экселя выглядит как большой единый неизменяемый блок ячеек.
Ну или, если у вас шапка выводится в 1ую строку, можно же банально через CurrentRegion посчитать число непустых строк на листе.

авторldfanate, ещё у меня excel 2010 и 2016
А это тут причём? Там проблемы будут в основном, какой odbc-драйвер у вас реально установлен. Но всегда же можно в панели управления odbc создать файловый DSN и подсунуть его в ConnectionString. Т.е. чтобы не явно имя драйвера и базы указывать, а взять преднастроенное из DSN-файла. Иногда так удобнее даже.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / QueryTables подключение к файлу Excel и выгрузка данных на лист / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]