Как сделать запрос в Excel в интернет: от простых ссылок до API-запросов

Вы когда-нибудь пытались автоматизировать сбор данных из интернета прямо в Microsoft Excel или Google Таблицы, но терялись в лабиринте функций, надстроек и скриптов? Сегодня ручное копирование информации с веб-сайтов — это как черпать воду ведром из реки, когда можно построить акведук. Современный Excel умеет "общаться" с интернетом на языке запросов, но 90% пользователей даже не подозревают об этих возможностях.

В этой статье мы разберём 5 практических методов импорта данных из сети — от элементарного вставления гиперссылок до сложных API-запросов через Power Query и VBA. Вы узнаете, как автоматически обновлять курсы валют из Центрального банка, парсить таблицы с сайтов статистики или даже получать данные из Google Analytics без ручного экспорта. А главное — мы покажем, какие методы работают в Excel 2016/2019/365 и Google Sheets, и где кроются подводные камни.

Спойлер: функция WEBSERVICE в Excel 365 позволяет получать данные с сайтов без единой строки кода — но работает только с ресурсами, поддерживающими CORS-политику. Если вам нужно парсить данные с произвольных страниц, без Power Query или VBA не обойтись. Начнём с самого простого и дойдём до профессиональных техник.

1. Базовый метод: импорт данных через гиперссылки и "Текст по столбцам"

Если вам нужно единожды скопировать таблицу с веб-страницы (например, список акций или расписание), самый быстрый способ — использовать встроенные инструменты Excel. Этот метод не требует навыков программирования и работает даже в старых версиях программы.

Вот пошаговая инструкция:

  • 🔗 Выделите таблицу на веб-странице (например, на сайте Центробанка или Investing.com) и скопируйте её в буфер обмена (Ctrl+C).
  • 📋 Вставьте данные в Excel через Главная → Вставить → Специальная вставка → Текст.
  • 🔄 Если данные вставили в один столбец, используйте Данные → Текст по столбцам, выбрав разделитель (обычно это табуляция или точка с запятой).
  • 🔍 Для автоматического обновления добавьте гиперссылку на источник через Вставка → Ссылка (но это не обновляет данные автоматически!).

Этот способ подходит для разовых задач, но имеет критические ограничения:

⚠️ Внимание: Копирование таблиц с веб-страниц часто приводит к "битым" данным — лишним пробелам, некорректным разделителям или потерянным символам. Всегда проверяйте итоговую таблицу на ошибки, особенно если данные будут использоваться в формулах.
📊 Как часто вы импортируете данные из интернета в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

2. Power Query: профессиональный импорт с веб-страниц и API

Power Query (или Get & Transform в новых версиях Excel) — это самый мощный инструмент для работы с внешними данными. Он позволяет подключаться к веб-страницам, API, базам данных и даже файлам JSON/XML. Главное преимущество — возможность автоматического обновления данных по расписанию.

Разберём на примере импорта курса доллара с сайта Центробанка РФ:

  1. Перейдите на вкладку Данные → Получить данные → Из других источников → Из веб.
  2. Вставьте URL страницы с данными (например, https://www.cbr.ru/currency_base/daily/).
  3. В открывшемся окне Power Query выберите нужную таблицу (обычно это Table 0 или Table 1).
  4. Отредактируйте столбцы: удалите лишние, переименуйте заголовки, измените формат данных (например, текст в число).
  5. Нажмите Закрыть и загрузить — данные появятся на новом листе.

Чтобы настроить автоматическое обновление:

  • 🔄 Перейдите в Данные → Обновить все → Свойства.
  • 🕒 Установите флажок Обновлять каждые и выберите интервал (например, 60 минут).
  • 📅 Для обновления при открытии файла отметьте Обновлять при открытии файла.
Источник данных Поддерживается Power Query? Требуется аутентификация? Пример URL
HTML-таблицы Да Нет https://www.cbr.ru/currency_base/daily/
JSON API Да Иногда https://api.exchangerate-api.com/v4/latest/USD
XML-фиды Да Редко https://www.nbrb.by/Services/XmlExRates.aspx
Google Sheets Да (через коннектор) Да (OAuth) https://docs.google.com/spreadsheets/d/ID/edit

Важный нюанс: некоторые сайты блокируют запросы от Power Query, если в заголовках отсутствует User-Agent. В таком случае придётся использовать VBA или сторонние сервисы вроде ParseHub.

Убедиться, что сайт не блокирует автоматические запросы

Проверить структуру таблицы (нет ли вложенных тегов)

Сохранить файл в формате .xlsx (в .xls Power Query не работает)

Отключить блокировщик рекламы (может мешать загрузке данных)-->

3. Функции WEBSERVICE и FILTERXML в Excel 365

Если вы используете Excel 365 или Excel 2021, у вас есть доступ к двум суперполезным функциям: WEBSERVICE и FILTERXML. Они позволяют получать данные с веб-страниц прямо в ячейки — без Power Query или VBA.

Пример 1: Получение курса доллара из XML-фида Центробанка

=FILTERXML(WEBSERVICE("https://www.cbr.ru/scripts/XML_daily.asp"), "//Valute[@ID='R01235']/Value")

Эта формула:

  1. WEBSERVICE загружает XML-документ с сайта ЦБ.
  2. FILTERXML извлекает значение курса доллара (ID R01235) по XPath-запросу.

Пример 2: Парсинг JSON-данных о погоде

=FILTERXML(WEBSERVICE("https://wttr.in/Moscow?format=j1"), "//current_condition/temp_C")

Ограничения этого метода:

  • 🚫 Работает только в Excel 365 и Excel 2021 (в более старых версиях этих функций нет).
  • 🔒 Многие сайты блокируют запросы без заголовков (требуется User-Agent).
  • 📉 Данные не обновляются автоматически — нужно нажимать F9 или использовать VBA.

=IFERROR(FILTERXML(WEBSERVICE("URL"), "XPath"), "Данные недоступны")-->

4. VBA-скрипты: для сложных задач и обхода ограничений

Когда стандартные инструменты Excel не справляются (например, сайт требует авторизации или данные спрятаны за JavaScript), на помощь приходит VBA. Скрипты позволяют:

  • 🔑 Отправлять запросы с заголовками (User-Agent, Authorization).
  • 📊 Парсить динамически загружаемые данные (через Selenium или HTML-парсеры).
  • 🔄 Автоматизировать обновление по таймеру.

Пример VBA-кода для импорта данных с API:

Sub GetDataFromAPI()

Dim http As Object, url As String, response As String

Set http = CreateObject("MSXML2.XMLHTTP")

url = "https://api.exchangerate-api.com/v4/latest/USD"

With http

.Open "GET", url, False

.setRequestHeader "User-Agent", "Mozilla/5.0"

.send

response = .responseText

End With

' Парсинг JSON (требуется подключить библиотеку VBA-JSON)

Dim json As Object

Set json = JsonConverter.ParseJson(response)

Sheets("Лист1").Range("A1").Value = json("rates")("RUB")

End Sub

Чтобы этот код заработал:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Подключите библиотеку для работы с JSON (например, VBA-JSON от GitHub).
  4. Запустите макрос через F5.
⚠️ Внимание: При работе с VBA и внешними API никогда не сохраняйте пароли или токены доступа в самом коде. Используйте переменные окружения или отдельные конфигурационные файлы, которые не попадают в контроль версий.
Как обойти блокировку запросов от Excel?

Многие сайты блокируют запросы, если в заголовке отсутствует User-Agent или Referer. В VBA это решается добавлением заголовков:

.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" .setRequestHeader "Referer", "https://www.google.com/"

Также можно использовать прокси-серверы, но это требует дополнительной настройки.

5. Google Таблицы: функции IMPORTXML, IMPORTDATA, IMPORTJSON

Если вы работаете в Google Sheets, у вас есть встроенные функции для импорта данных из интернета. Они проще в использовании, чем Power Query, и обновляются автоматически каждые несколько часов.

Основные функции:

  • 📊 IMPORTXML — импорт данных с веб-страниц по XPath.
  • 📈 IMPORTDATA — импорт данных в формате CSV или TSV.
  • 🔗 IMPORTFEED — импорт RSS или Atom-фидов.
  • 💻 IMPORTJSON (требует установки скрипта) — работа с JSON API.

Пример 1: Курс биткоина с CoinMarketCap

=IMPORTXML("https://coinmarketcap.com/", "//span[@class='sc-f70bb44c-0 jxpCgO base-text']")

Пример 2: Данные о погоде из CSV

=IMPORTDATA("https://wttr.in/Moscow?format=%C+%t+%w+%p")

Чтобы использовать IMPORTJSON, нужно:

  1. Открыть Расширения → Apps Script.
  2. Вставить код из этого репозитория.
  3. Сохранить и обновить страницу.

Преимущества Google Sheets:

  • ✅ Автоматическое обновление данных (раз в час или по триггеру).
  • ✅ Нет необходимости в VBA или надстройках.
  • ✅ Легко делиться таблицами с коллегами.

Недостатки:

  • ❌ Ограничение на количество запросов (около 50 в минуту).
  • ❌ Некоторые сайты блокируют запросы от Google.
  • ❌ Сложные XPath-запросы могут ломаться при изменении структуры сайта.

6. Продвинутые техники: работа с API и аутентификацией

Если вам нужно получать данные из защищённых источников (например, Google Analytics, Yandex Metrica или корпоративных API), потребуется работа с аутентификацией. Рассмотрим два сценария:

Сценарий 1: OAuth 2.0 (например, Google API)

  1. Зарегистрируйте приложение в Google Cloud Console и получите Client ID и Client Secret.
  2. Используйте библиотеку Google Apps Script для авторизации:
function getGoogleAnalyticsData() {

var token = ScriptApp.getOAuthToken();

var url = "https://analytics.googleapis.com/v1/reports:batchGet?access_token=" + token;

var response = UrlFetchApp.fetch(url, {headers: {"Authorization": "Bearer " + token}});

var data = JSON.parse(response.getContentText());

return data;

}

Сценарий 2: API-ключи (например, OpenWeatherMap)

Многие сервисы (например, OpenWeatherMap, ExchangeRate-API) предоставляют данные по ключу. В Power Query это реализуется так:

  1. Создайте параметр для ключа (Главная → Управление параметрами → Создать параметр).
  2. В запросе добавьте ключ в URL или заголовки:
let

apiKey = "ваш_ключ",

url = "https://api.openweathermap.org/data/2.5/weather?q=Moscow&appid=" & apiKey,

data = Web.Contents(url)

in

data

Важные правила работы с API:

  • 🔑 Никогда не храните ключи в открытом виде в файле Excel (используйте переменные окружения или защищённые параметры).
  • 📜 Изучите документацию API — многие сервисы имеют лимиты на количество запросов.
  • 🔄 Настройте кэширование данных, чтобы не превышать лимиты.

Сравнение методов: какой выбрать?

Метод Сложность Автообновление Подходит для Ограничения
Копирование + Текст по столбцам ❌ Нет Разовые задачи, простые таблицы Ручная работа, ошибки форматирования
Power Query ⭐⭐⭐ ✅ Да Регулярный импорт, сложные источники Не работает в Excel 2013 и старше
WEBSERVICE + FILTERXML ⭐⭐ ❌ Только вручную Excel 365, простые API и XML Блокировки CORS, нет в старых версиях
VBA ⭐⭐⭐⭐ ✅ Да (через таймер) Сложные задачи, авторизация, динамические данные Требует знаний программирования
Google Sheets (IMPORTXML etc.) ⭐⭐ ✅ Да Простые веб-данные, совместная работа Ограничения на количество запросов

Выбор метода зависит от:

  • 📌 Вашей версии Excel (в 2016 нет WEBSERVICE, в 2013 нет Power Query).
  • 📌 Сложности задачи (нужна ли авторизация, динамические данные и т.д.).
  • 📌 Частоты обновления (ручное или автоматическое).

FAQ: Частые вопросы по импорту данных в Excel

Можно ли импортировать данные с сайта, который требует логин/пароль?

Да, но для этого потребуется VBA с обработкой Cookies или OAuth. Простейший способ — использовать Selenium для имитации действий пользователя (ввода логина/пароля). Однако это нарушает условия использования многих сервисов, поэтому проверьте их политику перед автоматизацией.

Альтернатива — использовать официальное API сервиса с токеном доступа (например, Yandex Metrica API или Google Analytics API).

Почему Power Query не загружает данные с некоторых сайтов?

Это может происходить по нескольким причинам:

  1. Сайт блокирует запросы без заголовка User-Agent (решается через VBA).
  2. Данные подгружаются динамически с помощью JavaScript (нужен парсер вроде Puppeteer или Selenium).
  3. Сайт требует POST-запросы вместо GETPower Query это не поддерживается напрямую).
  4. Ограничения CORS (Cross-Origin Resource Sharing).

Для диагностики откройте Power Query, перейдите в Дополнительно → Параметры запроса и проверьте ответ сервера.

Как обновить данные в Excel автоматически при открытии файла?

Для этого:

  1. Перейдите в Данные → Обновить все → Свойства.
  2. Отметьте галочку Обновлять при открытии файла.
  3. Для Power Query также можно настроить фоновое обновление в Параметры запроса.

Если используете VBA, добавьте этот код в модуль ThisWorkbook:

Private Sub Workbook_Open()

ThisWorkbook.RefreshAll

End Sub

Можно ли импортировать данные из социальных сетей (VK, Instagram, Facebook)?

Прямой импорт данных из социальных сетей через Excel крайне ограничен из-за их политики безопасности. Однако есть обходные пути:

  • 📊 Используйте официальные API (например, Facebook Graph API или VK API) с авторизацией через OAuth.
  • 🔗 Экспортируйте данные в CSV/JSON через веб-интерфейс соцсети, а затем импортируйте в Excel.
  • 🤖 Используйте сторонние сервисы вроде Zapier или Integromat для автоматизации.

⚠️ Внимание: Парсинг социальных сетей без разрешения нарушает их пользовательское соглашение и может привести к блокировке аккаунта.

Как импортировать данные с сайта, который использует JavaScript для загрузки контента?

Сайты на React, Angular или Vue.js часто подгружают данные динамически, и стандартные методы (Power Query, IMPORTXML) не работают. Решения:

  1. Использовать Selenium + VBA: это позволит имитировать действия браузера и получать финальный HTML после выполнения JavaScript.
  2. Найти исходный API сайта: часто данные загружаются через XHR-запросы (можно найти в инструментах разработчика браузера, вкладка Network).
  3. Сервисы парсинга: ParseHub, Octoparse или Apify умеют работать с динамическим контентом.

Пример кода для Selenium в VBA:

Sub GetDynamicData()

Dim driver As New ChromeDriver

driver.Get "https://example.com"

' Ждём загрузки JavaScript

driver.Wait 5000

' Получаем HTML после рендеринга

Dim html As String: html = driver.PageSource

' Парсим данные (например, через Regex или HTML-парсер)

driver.Quit

End Sub

Для работы этого кода потребуется установить SeleniumBasic и драйвер для Chrome.