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

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

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

Диалог свойств веб-запроса Excel

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

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

0
источник поделиться
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 поддерживает возможность открытия 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, пользователь получит предупреждение о том, что документ с тем же именем открыт.
+1
источник

Связанные вопросы


Похожие вопросы

Посмотрите другие вопросы по меткам или Задайте вопрос