Функция вебслужба в excel пример

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Еще…Меньше

Функция ВЕБСЛУЖБА возвращает данные из веб-службы в Интернете или интрасети.

Примечания: 

  • Функция ВЕБСЛУЖБА доступна только в Excel 2013 г. и более поздних Windows.

  • Функция ВЕБСЛУЖБА может отображаться в коллекции Excel для Mac, но она использует Windows операционных систем, поэтому она не возвращает результаты на компьютере Mac.

Синтаксис

ВЕБСЛУЖБА(URL-адрес)

Аргумент функции ВЕБСЛУЖБА имеет следующий аргумент:

Аргумент

Описание

url   

Обязательно

URL-адрес веб-службы, которая будет называться

Примечания: 

  • Если аргументы не могут вернуть данные, вебСЛУЖБА возвращает #VALUE! ошибку «#ВЫЧИС!».

  • Если аргументы возвращают строку, которая не является допустимой или содержит больше допустимого ограничения в 32767 символов, вебСЛУЖБА возвращает #VALUE! ошибку «#ВЫЧИС!».

  • Если URL-адрес — это строка, которая содержит больше символов, чем 2048 символов, разрешенных для запроса GET, ВЕБСЛУЖБА возвращает #VALUE! ошибку «#ВЫЧИС!».

  • Для протоколов, которые не поддерживаются, например ftp:// или file://, веб#VALUE! ошибку «#ВЫЧИС!».

Пример

Вот пример использования вымышлеемой веб-службы:

=ВЕБСЛУЖБА(«http://mywebservice.com/serviceEndpoint?searchString=Exce»)

Советы: 

  • Для лучших результатов ПЕРЕД включением в формулу URL-адрес ВЕБСЛУЖБЫ должен быть закодирован.

  • Чтобы кодировать URL-адрес, используйте функцию КОДЕОД.URL. Затем со ссылкой на ячейку в формуле ВЕБСЛУЖБА в кодированном URL-адресе.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Функция КОДИР.URL

Функция ФИЛЬТР.XML

Нужна дополнительная помощь?

Я уже неоднократно разбирал способы импорта данных в Excel из интернета с последующим автоматическим обновлением. В частности:

  • В старых версиях Excel 2007-2013 это можно было сделать с помощью прямого веб-запроса.
  • Начиная с 2010 года это можно очень удобно делать с помощью надстройки Power Query.

К этим способам в последних версиях Microsoft Excel теперь можно добавить ещё один — импорт данных из интернета в формате XML с помощью встроенных функций.

XML (eXtensible Markup Language = Расширяемый Язык Разметки) – это универсальный язык, созданный для описания любых данных. По сути, он представляет собой обычный текст, но с добавленными в него специальными тегами для разметки структуры данных. Многие сайты совершенно бесплатно предоставляют всем желающим потоки своих данных в XML-формате для загрузки. На сайте Центрального Банка России (www.cbr.ru), в частности, с помощью подобной технологии отдаются данные по курсам различных валют. С сайта Московской Биржи (www.moex.com) таким же образом можно загрузить котировки акций, облигаций и множество другой полезной информации.

Начиная с версии 2013 в Excel появились две функции для прямой загрузки XML-данных из интернета в ячейки листа: ВЕБСЛУЖБА (WEBSERVICE) и ФИЛЬТР.XML (FILTERXML). Работают они в паре — сначала функция ВЕБСЛУЖБА выполняет запрос к нужному сайту и возвращает его ответ в формате XML, а затем с помощью функции ФИЛЬТР.XML мы «разбираем» этот ответ на составляющие, извлекая из него нужные нам данные.

Давайте рассмотрим работу этих функций на классическом примере – импорте курса любой нужной нам валюты на заданный интервал дат с сайта Центробанка России. В качестве заготовки будем использовать вот такую конструкцию:

Заготовка

Здесь:

  • В жёлтых ячейках находятся даты начала и окончания интересующего нас периода.
  • В синей сделан выпадающий список валют при помощи команды Данные — Проверка — Список (Data — Validation — List).
  • В зеленых ячейках мы будем использовать наши функции, чтобы создать строку запроса и получить ответ сервера.
  • Таблица справа — справочник по кодам валют (потребуется нам чуть позже).

Поехали!

Шаг 1. Формируем строку запроса

Чтобы получить от сайта требуемую информацию, его нужно правильно спросить. Заходим на www.cbr.ru и в подвале главной страницы открываем ссылку’ Технические ресурсы ’- Получение данных, используя XML (http://cbr.ru/development/SXML/). Проматываем чуть ниже и во втором примере (Example 2) будет то, что нам нужно — получение курсов валюты на заданный интервал дат:

Пример строки запроса

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

Валюта

Код

                         

Валюта

Код

Австралийский доллар R01010

Литовский лит

R01435

Австрийский шиллинг

R01015

Литовский талон

R01435

Азербайджанский манат

R01020

Молдавский лей

R01500

Фунт стерлингов

R01035

Немецкая марка

R01510

Ангольская новая кванза

R01040

Нидерландский гульден

R01523

Армянский драм

R01060

Норвежская крона

R01535

Белорусский рубль

R01090

Польский злотый

R01565

Бельгийский франк

R01095

Португальский эскудо

R01570

Болгарский лев

R01100

Румынский лей

R01585

Бразильский реал

R01115

Сингапурский доллар

R01625

Венгерский форинт

R01135

Суринамский доллар

R01665

Гонконгский доллар

R01200

Таджикский сомони

R01670

Греческая драхма

R01205

Таджикский рубл

R01670

Датская крона

R01215

Турецкая лира

R01700

Доллар США

R01235

Туркменский манат

R01710

Евро

R01239

Новый туркменский манат

R01710

Индийская рупия

R01270

Узбекский сум

R01717

Ирландский фунт

R01305

Украинская гривна

R01720

Исландская крона

R01310

Украинский карбованец

R01720

Испанская песета

R01315

Финляндская марка

R01740

Итальянская лира

R01325

Французский франк

R01750

Казахстанский тенге

R01335

Чешская крона

R01760

Канадский доллар

R01350

Шведская крона

R01770

Киргизский сом

R01370

Швейцарский франк

R01775

Китайский юань

R01375

Эстонская крона

R01795

Кувейтский динар

R01390

Югославский новый динар

R01804

Латвийский лат

R01405

Южноафриканский рэнд

R01810

Ливанский фунт

R01420

Вон Республики Корея

R01815

Японская иена

R01820

Полный справочник по кодам валют есть там же, на сайте ЦБ – см. http://cbr.ru/scripts/XML_val.asp?d=0

Теперь сформируем строку запроса в ячейке на листе с помощью:

  • оператора склейки текста (&), чтобы собрать воедино;
  • функции ВПР (VLOOKUP), чтобы найти код нужной нам валюты в справочнике;
  • функции ТЕКСТ (TEXT), преобразующей дату по заданному шаблону день-месяц-год через косую черту.

Формируем строку запроса

="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")&
"&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)

Шаг 2. Выполняем запрос

Теперь используем функцию ВЕБСЛУЖБА (WEBSERVICE) с созданной строкой запроса в качестве единственного аргумента. Ответом будет длинная строка XML-кода (лучше включить перенос по словам и увеличить размер ячейки, если хочется увидеть её целиком):

XML запрос функцией ВЕБСЛУЖБА в Excel

Шаг 3. Разбираем ответ

Чтобы легче было разобраться в структуре данных ответа, лучше воспользоваться одним из онлайн-парсеров XML (например, http://xpather.com/ или https://jsonformatter.org/xml-parser), которые умеют наглядно форматировать XML-код, добавляя к нему отступы и подсвечивая цветом синтаксис. Тогда всё станет существенно понятнее:

XML-ответ сервера ЦБ РФ

Теперь хорошо видно, что значения курса обрамлены у нас тегами <Value>…</Value>, а даты являются атрибутами Date в тегах <Record>.

Чтобы их извлечь курс, выделим на листе столбец из десяти (или более — если делать с запасом) пустых ячеек (т.к. был задан 10-дневный интервал дат) и введём в строку формул функцию ФИЛЬТР.XML (FILTERXML):

Извлекаем курс

Здесь первый аргумент – это ссылка на ячейку с ответом сервера (B8), а второй – строка запроса на XPath – специальном языке, с помощью которого можно обращаться к нужным фрагментам XML-кода и извлекать их. Подробнее о языке XPath можно почитать, например, тут.

Важно после ввода формулы нажать не Enter, а сочетание клавиш Ctrl+Shift+Enter, т.е. ввести её как формулу массива (фигурные скобки вокруг будут добавлены автоматически). Если же у вас последняя версия Office 365 с поддержкой в Excel динамических массивов, то хватит и простого Enter, да и выделять заранее пустые ячейки не требуется — функция сама займет столько ячеек, сколько ей нужно.

Для извлечения дат поступим аналогично – выделим несколько пустых ячеек в соседнем столбце и используем ту же функцию, но с другим запросом XPath, чтобы получить все значения атрибутов Date из тегов Record:

=ФИЛЬТР.XML(B8;»//Record/@Date»)

Теперь в будущем при изменении дат в исходных ячейках В2 и В3 или выборе другой валюты в выпадающем списке ячейки B3, наш запрос будет автоматически обновляться, обращаясь к серверу ЦБ за новыми данными. Чтобы форсировать обновление вручную, можно дополнительно использовать сочетание клавиш Ctrl+Alt+F9.

Ссылки по теме

  • Импорт курса биткойна в Excel через Power Query
  • Импорт курса валют из интернета в старых версиях Excel

импорт данных вебслужба лого

Хотели ли вы когда-нибудь включить данные из интернет-ресурсов в ваши таблицы Excel, таких как курсы валют, погоду, результаты выдачи поисковиков или даже сообщения Twitter. C новым Excel 2013 такая возможность появилась в виде функции ВЕБСЛУЖБА.

Инструменты импорта данных из интернет были реализованы в более ранних версиях и позволяли выгружать информацию с веб страниц. Функция ВЕБСЛУЖБА возвращает данные на лист в формате XML, из которого в последующем можно выбрать необходимые данные с помощью функции ФИЛЬТР.XML. В сегодняшней статье мы рассмотрим возможность импорта курса доллара за недельный период (думаю, на фоне текущей нестабильной ситуации на рынках, эта информация актуальна для многих), по полученным данным построим график для возможности отслеживания тренда изменений

Для начала, необходимо найти веб сервис, который возвращает данные в формате XML. Я воспользовался службами Центробанка, который любезно предоставляет свои API для выгрузки данных. По ссылке вы найдете все действительные на текущий момент запросы банка.

https://www.cbr.ru/scripts/Root.asp?Prtid=SXML

Так как нас интересует недельный тренд доллара США, ищем динамику котировок, она находится под заголовком Example 2. Если мы щелкнем по ссылке этого примера, сервис вернет нам данные по котировкам доллара за период 01/03/2001 по 14/03/2001 в формате XML. Обратите внимание на адресную строку в браузере, здесь находится строка запроса к сервису (она то нам и нужна!!!) с тремя аргументами: Дата С, Дата ПО и идентификационный номер валюты.

сервис центробанка

Изменяя любой из них, сервис ЦБ будет возвращать нужную нам информацию.

Копируем строку с заголовком, открываем книгу Excel, в ячейку B1 вбиваем функцию =ВЕБСЛУЖБА(), где аргументом функции станет, скопированная нами, строка, т.е. =ВЕБСЛУЖБА(&quot;https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=07/08/2013&date_req2=13/08/2013&VAL_NM_RQ=R01235&quot;)

синтаксис функции вебслужба

Обратите внимание, функция ВЕБСЛУЖБА вернула ответ в формате XML, такой же как мы видели в браузере. Теперь с полученного ответа необходимо выбрать нужные нам данные. В этом нам поможет функция ФИЛЬТР.XML, которая использует в качестве аргументов два параметра: первый — XML содержимое, второй – объект Xpath — язык запросов к элементам XML-документа, другими словами, это текстовая строка, которая указывает системе, какие конкретные данные необходимо получить из XML содержимого. Вы можете более подробно прочитать о языке Xpath в статье.

Выделяем ячейки A4:A8, жмем F2, вставляем формулу =ФИЛЬТР.XML(B1; &quot;//Record//@Date&quot;) и нажимаем сочетание клавиш Ctrl + Shift + Enter, таким образом у нас получилась формула массива, которая выбирает из веб службы даты изменений курсов валют Центробанком. Таким же образом выделяем соседний диапазон B4:B8 и вставляет туда формулу =ФИЛЬТР.XML(B1;»//Value»). У нас должна получиться следующая таблица:

фильтр.xml формула

Так как мой компьютер воспринимает в качестве разделителя дробной части только точку (.), немного подправим формулу, возвращающую курс валют.

замена запятой на точку

Итак, у нас есть статичная таблица изменения курса доллара к рублю за период с 7/08/2013 по 13/08/2013. Так как наша первоначальная задача была – динамическое обновление данных, нам потребуется заменить жестко зафиксированные даты в строке запроса на формулу, которая бы изменяла свое значение в зависимости от текущей даты.

Установим в качестве второго аргумента значение сегодняшней даты плюс один день (т.к. Центробанк устанавливает курс на следующий день), первый аргумент будет равняться второму аргументу минус 6 дней. Зададим обе эти даты в качестве первого и второго аргументов в нашей строке запроса.

динамическая вебслужба

Добавим немного красоты для наглядности, теперь вы точно будете знать, когда начинать сливать валюту)

график курса доллара excel

Стоит отметить, что данную функцию можно применять для импорта данных с любых веб служб, предоставляющих свои API в свободном доступе. Такими службами являются API Яндекс, Twitter, API Google и т.д.

Скачать файл с примером использования функций ВЕБСЛУЖБА и ФИЛЬТР.XML для выгрузки курса доллара.

Функция ВЕБСЛУЖБА возвращает данные из веб-службы в Интернете или локальной сети.

Описание функции

Возвращает данные из веб-службы в Интернете или локальной сети.

Синтаксис

=ВЕБСЛУЖБА(url)

Аргументы

url

Обязательный аргумент. URL-адрес веб-службы, введенный как строка.

Замечания

  • Если аргументы не могут вернуть данные, функция ВЕБСЛУЖБА возвращает значение ошибки #ЗНАЧ!.
  • Если аргументы приводят к созданию недействительной строки или строки, содержащей больше чем 32 767 символов, функция ВЕБСЛУЖБА возвращает значение ошибки #ЗНАЧ!.
  • Если URL-адрес — это строка, содержащая более чем 2048 символов, допустимых для запроса GET, функция ВЕБСЛУЖБА возвращает значение ошибки #ЗНАЧ!.
  • Для неподдерживаемых протоколов, таких как ftp:// или file://, ВЕБСЛУЖБА возвращает значение ошибки #ЗНАЧ!.

Пример

Резюме

Функция Excel WEBSERVICE возвращает данные из веб-службы. Функция ВЕБ-СЕРВИС доступна только в Excel 2013 и более поздних версиях для Windows.

Цель

Получить данные из веб-службы

Возвращаемое значение

Результирующие данные

Синтаксис

= ВЕБ-СЕРВИС (URL)

Аргументы

  • url — URL-адрес вызываемой веб-службы.

Версия

Excel 2013

Примечания по использованию

Функция WEBSERVICE возвращает данные из веб-службы, размещенной в Интернете. Функция ВЕБ-СЕРВИС доступна только в Excel 2013 и более поздних версиях для Windows.

Веб-служба использует протокол, например HTTP, для извлечения данных в машиночитаемом формате, таком как XML или JSON. Например, формула, которая использует WEBSERVICE для вызова фиктивной веб-службы, размещенной на somewebservice.com, может выглядеть примерно так:

=WEBSERVICE(“http://somewebservice.com/endpoint?query=xxxx”)

Результат функции WEBSERVICE возвращается непосредственно на рабочий лист. В случаях, когда результат веб-службы находится в формате XML, вы можете использовать функцию FILTERXML для анализа XML.

пример

Простым примером веб-службы является RSS, которая используется для синдицирования контента в формате XML. RSS широко доступен и не требует аутентификации, поэтому это простой способ протестировать функцию WEBSERVICE. В приведенном выше примере WEBSERVICE используется для получения последних новостей из НАСА. Формула в B4:

=WEBSERVICE("https://www.nasa.gov/rss/dyn/breaking_news.rss")

RSS использует XML, поэтому результатом является длинная строка XML, содержащая заголовки последних 10 новостных статей, опубликованных НАСА, а также метаинформацию, такую ​​как описание, дата, URL-адрес и т. Д. На следующем экране показаны эти данные в текстовом редакторе:

Разбор результата

Если результатом WEBSERVICE является XML, вы можете использовать функцию FILTERXML для анализа данных. В показанном примере именно так извлекаются данные и заголовок каждой статьи. Формула в B7 извлекает дату и обрезает лишние символы с помощью функции MID, чтобы создать дату, удобную для Excel:

=MID(FILTERXML(B4,"//item/pubDate"),6,11)

Формула в C7 извлекает заголовок:

=FILTERXML(B4,"//item/title")

Заметки

  • Когда WEBSERVICE не может получить данные, он возвращает #VALUE! ошибка.
  • Если результат WEBSERVICE превышает 32767 символов, возвращается #VALUE! ошибка.

Понравилась статья? Поделить с друзьями:
  • Функция в excel чтобы не округлять
  • Функция в функции суммесли в excel
  • Функция в excel чтобы найти процентную ставку
  • Функция в табличном процессоре ms excel это
  • Функция в excel чтобы было два условия если