Макросы VBA Excel — Страница 25

Скачивание файла с сайта с авторизацией

Пример макроса для скачивания файла с авторизацией.

Для его работы, надо подключить библиотеку Microsoft WinHTTP Services (version 5.1.) в меню Tools - References

Сначала выполняется POST-запрос для авторизации,
потом GET-запрос для скачивания файла

Получение кода региона (города) для работы с сервисами Яндекса

Иногда для программного формирования ссылки требуется получить код региона или города, зная его название.
(например, для поиска цен на товары в Яндекс.Маркете в заданном регионе)

К примеру, нужно найти некий товар в Москве, программно сформировав ссылку вида
httр://yandex.ru/yandsearch?text=НазваниеТовара&lr=213,
где 213 - это код города Москвы.

Функция GetYandexRegionCode позволяет быстро получить такой код, зная название города:

Sub ПримерПолученияКодаРегиона()
    КодРегиона1 = GetYandexRegionCode("Москва")    '  КодРегиона1 = 213
    КодРегиона2 = GetYandexRegionCode("Иркутская область")    '  КодРегиона2 = 11266
    КодРегиона3 = GetYandexRegionCode("Европа")    '  КодРегиона3 = 111
    КодРегиона4 = GetYandexRegionCode("Чукотский автономный округ")    '  КодРегиона4 = 10251
    КодРегиона5 = GetYandexRegionCode("Первоуральск")    '  КодРегиона5 = 11171
    
    Debug.Print КодРегиона1, КодРегиона2, КодРегиона3, КодРегиона4, КодРегиона5
End Sub

Поиск самого нового файла в папке (с просмотром подпапок)

Функция LastFile предназначена для поиска самого свежего файла в заданной папке

(производится поиск файлов по маске, и из найденных файлов выбирается тот, дата последнего изменения которого максимальна)

 

Пример использования функции:

Sub ПримерИспользованияФункции_LastFile()
    ' Ищем на рабочем столе все файлы TXT, и выводим имя самого нового файла.
    ' Просматриваются папки с глубиной вложения не более трёх.

    Dim ПутьКПапке$, СамыйПоследнийФайл$
    ' получаем путь к папке РАБОЧИЙ СТОЛ
    ПутьКПапке = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    ' получаем путь к самому новому файлу (проверяется дата последнего сохранения)
    СамыйПоследнийФайл$ = LastFile$(ПутьКПапке, ".txt", 3)
 
    If СамыйПоследнийФайл$ = "" Then MsgBox "Не найдено ни одного файла", vbExclamation: Exit Sub
    MsgBox СамыйПоследнийФайл$, vbInformation, "Самый свежий файл"
End Sub

Преобразование строки со значениями в массив

Ситуация: дана строка, в которой через запятую перечислены значения (или диапазоны значений)

Требуется подсчитать, сколько значений содержится в строке, или же разбить строку на массив, содержащий все значения из исходной строки.

И, если при исходных строках вида "5,6,8,18,2,21" всё просто (достаточно применить VB-функцию Split), то при наличии в строке диапазонов значений вида Число1-Число2 (например, строка "9-15,18,2,11-9") задача заметно усложняется.

В этих случаях на помощь придёт функция ArrayOfValues

Function ArrayOfValues(ByVal txt$) As Variant
 
' Принимает в качестве параметра строку типа ",,5,6,8,,9-15,18,2,11-9,,1,4,,21,"
    ' Возвращает одномерный (горизонтальный) массив в формате
    ' array(5,6,8,9,10,11,12,13,14,15,18,2,11,10,9,1,4,21)
    ' (пустые значения удаляются; диапазоны типа 9-15 и 17-13 раскрываются)

Макрос проверки доступности веб-ресурса

Данная функция позволяет проверить, доступен ли тот или иной веб-ресурс с вашего компьютера, и получить код состояния HTTP

Как известно, при переходе по ссылке (URL), веб-сервер возвращает код состояния HTTP.

Наиболее популярный коды ответа веб-сервера: (перечень всех кодов состояния можно посмотреть в Википедии)

  • 200 OK («хорошо»)
  • 403 Forbidden («запрещено»)
  • 404 Not Found («не найдено»)

Код состояния - это целое число из 3 цифр.
По первой цифре можно определить, доступен ли ресурс: если первая цифра 2, то ресурс доступен, если любая другая - то скорее всего нет.

Пример макроса, проверяющего доступ к различным ресурсам по URL: