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


И ещё вопрос: почему QueryTables не делает Refresh, если у recordset сделать проверку на пустоту? Как это обойти?
...
Рейтинг: 0 / 0
QueryTables подключение к файлу Excel и выгрузка данных на лист
    #40088287
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтото типа такого?
Код: 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
QueryTables подключение к файлу Excel и выгрузка данных на лист
    #40088300
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanate, да. А как проверить не вернёт ли запрос пустоту? Или это только через recordset?
Мне в зависимости от этого надо создавать лист или не создавать
...
Рейтинг: 0 / 0
QueryTables подключение к файлу Excel и выгрузка данных на лист
    #40088365
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanate, ещё у меня excel 2010 и 2016
...
Рейтинг: 0 / 0
QueryTables подключение к файлу Excel и выгрузка данных на лист
    #40089067
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторBlackeAngel,
А как проверить не вернёт ли запрос пустоту?

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

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


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