Возникла необходимость импортировать данные из web
Использую для этого QueryTable.
Эксель используется как ком объект и скрывается.
После использования QueryTable данные из экселя перетягиваются в нужное приложение.
Для создания web запроса из vba можно использовать диалог
- Код: Выделить всё
Application.Dialogs( xlDialogNewWebQuery ).Show
Из меню диалог вызывается так:
Data -> Import External Data -> New Web Query
После того как пользователь выбрал, что необходимо закачать с помощью этого запроса, ему предлагается второй диалог с выбором ячейки для хранения QueryTable.
Второй диалог как я понял является неотемлимой частью первого. Вместе с этим диалогом появляется эксель. Вот в нем и проблема, необходимо полностью скрыть эксель. Так, что бы он не появлялся.
Есть второй вариант, это программно создать пустышку QueryTable:
- Код: Выделить всё
With ActiveSheet.QueryTables.Add(Connection:="URL;http://braindumps.com.ua", _
Destination:=Range("A1"))
.Name = "braindumps.com.ua"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "8"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
И после этого вызвать для него Edit query.
Кнопка вызова диалога Edit query находится на панели инструментов External data
Проблема этого способа заключается в том, что не получается вызвать этот Edit query на созданном QueryTable программно.
Просто из-за незнания того, как это сделать методами/свойствами, а найти никак не получается. Пробовал нажать кнопку интерфейса экселя из vba:
- Код: Выделить всё
Application.CommandBars("External Data").Controls(1).Execute
Завершается ошибкой.
Может, кто подскажет возможное решение?