
Я создал электронную таблицу Excel в Excel 2016, которая использует формулы WebService и FilterXML для взаимодействия с API Bing и перетаскивания данных обратно. Формулы отлично работают в Excel 2016, но когда электронная таблица загружается в более старые версии Excel 2010 и т. д., она генерирует ошибку #Name? и не возвращает результаты. Я полагаю, это происходит из-за того, что формулы Webservice и FilterXMl несовместимы со старыми версиями Excel.
По сути, код должен:
Возьмите ключ API из ячейки C2 на листе Sheet2. Возьмите начальное местоположение из ячейки C25 (это переменная, и пользователь может ее изменить). Возьмите конечное местоположение из ячейки D25 (это переменная, и пользователь может ее изменить). Возьмите режим транспортировки из ячейки C27 (это переменная, и пользователь может ее изменить). URL-адрес должен быть показан в C29 (текущий код для этого: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(distance.url,"$1",C25),"$2",D25),"$3",travel.mode),"$k",bingmaps.key).
Это сгенерирует ответ в ячейке C31 - `т.е. необработанный вывод (здесь в данный момент используется WebService). Код: =WEBSERVICE(C29) Это сгенерирует код состояния в ячейке C32 - т.е. 200 (здесь в данный момент используется =FILTERXML(C31,"//StatusCode[1]")
=FILTERXML(C31,"//TravelDistance[1]") затем используется в ячейке C34, чтобы получить расстояние поездки от C31 =FILTERXML(C31,"//TravelDuration[1]") затем используется в ячейке C35, чтобы показать продолжительность поездки от C31 в минутах.
Спасибо.
решение1
О, боже, я бы предположил, что было бы проще просто обновить старые клиенты, чем пытаться реализовать это надежно в старых версиях Excel. Я помню, как использовал объект IE в VBA несколько лет назад. Было не очень стабильно, но тогда я загружал целый сайт, а не просто вызов http get.
Более подробную информацию можно найти здесь.https://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010
Недавно я применил более простой трюк, чтобы вытащить веб-данные прямо в Excel в качестве веб-источника данных (Данные > Из сети). Я выгрузил весь html-ответ из твиттер-канала прямо на чистый лист, затем использовал формулы поиска и подстановки, чтобы найти нужную строку и столбец данных. Хочу напомнить, что я даже мог автоматически запустить мастер «текст в столбцы» после обновления данных. Все это было сделано без VBA, поэтому не было необходимости в файлах xlsm и в том, чтобы люди боялись включать макросы.
P.S. Я сейчас попробовал открыть тот же лист на моем текущем компьютере (windows 10, office 2016) и на старом (windows 7, office 2010 или 13?). Он жалуется на то, что javascript отключен в браузере (который, как я предполагаю, по-прежнему является объектом Internet Explorer, а не Edge).