MyTetra Share
Делитесь знаниями!
Как я могу отправить данные из веб-запроса Excel после завершения запроса?
Время создания: 29.07.2019 23:53
Текстовые метки: VBA Web
Раздел: !Закладки - VBA - VBA Web
Запись: xintrea/mytetra_db_adgaver_new/master/base/15633344510o1olf2i4j/text.html на raw.githubusercontent.com

Как я могу отправить данные из веб-запроса Excel после завершения запроса?


Как разработчик электронных таблиц, я пытаюсь сшить два набора строк: один из веб-запроса в собственный веб-сервис, а другой - набор ручных строк, добавленных пользователем электронной таблицы (а не я).

Excel, встроенный в объект Web Query/Connections, предоставляет только два режима: я могу включить "Включить обновление фона", что делает асинхронный веб-запрос или снимите его.


Если он не установлен, Excel зависает во время выполнения запроса, что нежелательно. Проверяя, что, как представляется, не существует какого-либо обратного вызова или события, доступного для уведомления, чтобы я мог работать против обновленных веб-данных.

Есть ли другой способ сделать это?

0

event-handling events vba web-services excel

mcw0933 06 окт. '15 в 16:04

источник поделиться

2 ответа

В веб-запросе Excel используется объект, называемый QueryTable, для выполнения бизнеса по извлечению и отображению данных.

Доступ к QueryTable можно получить с помощью VBA.

И так же, как объект диаграммы, объект запроса имеет события, на которые можно ответить только с помощью ключевого слова WithEvents из класса, например:

Private WithEvents MyQueryTable As QueryTable


Private Sub MyQueryTable_AfterRefresh(ByVal Success As Boolean)

'Do your post processing here...

End Sub


+1

Excel Hero 06 окт. '15 в 16:45

источник поделиться

Excel поддерживает возможность открытия URL-адреса в качестве другой книги Excel с помощью Workbooks.Open method :

Из MSDN:

Sub OpenUSDRatesPage()

Dim objBK As Workbook

Dim objRng As Range


'Open the page as a workbook.

Set objBK = Workbooks.Open("http://www.x-rates.com/tables/USD.HTML")


'Find the Canadian Dollar cell.

Set objRng = objBK.Worksheets(1).Cells.Find("Canadian Dollar")


'Retrieve the exchange rate.

MsgBox "The CAD/USD exchange rate is " & objRng.Offset(-6, -1).Value

End Sub


Вызов синхронный, поэтому вы можете работать с результирующими данными в новой книге сразу после открытого вызова.

Во время загрузки книги Excel отображает индикатор выполнения. Когда вы закончите, вы можете позвонить. Закрыть, чтобы закрыть книгу веб-данных. (например, для примера MSDN вы должны позвонить objBK.Close, когда закончите.)


Предостережения об использовании этого подхода:

  • Вы пытаетесь перенести данные из веб-книги самостоятельно (ThisWorkbook) самостоятельно, в отличие от обновляемого веб-запроса Excel, который имеет назначенное место назначения.
  • Если ваша конечная точка веб-сайта имеет имя документа, соответствующее имени открытого документа в Excel, пользователь получит предупреждение о том, что документ с тем же именем открыт.
Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования