mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Макросы VBA Excel

Декодирование JSON (преобразование кодов символов в буквы)

Функция предназначена для перевода ответа веб-сервера в формате JSON в читаемый текст.

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

Sub test_JSON_decode()
    ' исходная строка в кодировке JSON
    txt$ = "<th class=\""label\"">\u0428\u0442\u0440\u0438\u0445\u043a\u043e\u0434<\/th>\n    <td class=\""data\"">408<\/td>\n"
 
    Debug.Print JSON_decode(txt)
    ' на выходе получаем: <th class="label">Штрихкод</th>    <td class="data">408</td>
End Sub

Код функции JSON_decode:

Выбор уникальных (неповторяющихся) значений из списка в виде текстовой строки

Function JustUnique(ByVal txt As String, Optional ByVal Separator As String = ", ") As String
    ' Принимает в качестве параметра обрабатываемую строку txt,
    ' и разделитель Separator элементов строки txt.
    ' Возвращает строку txt, но уже не содержающую повторяющихся значений
    Dim coll As New Collection: On Error Resume Next
    For Each v In Split(txt, Separator)
        coll.Add CStr(v), CStr(v)
    Next v
    For Each v In coll: JustUnique = JustUnique & Separator & v: Next v
    JustUnique = Mid(JustUnique, Len(Separator) + 1)
End Function
 
 
Sub ПримерИспользования_ВыборУникальныхЗначенийИзСписка()
    txt = "58, 28, 32, 60, 28, 58, 14"
    new_txt = JustUnique(txt) ' возвращает строку "58, 28, 32, 60, 14"
    Debug.Print "Уникальные значения: " & new_txt, vbInformation, "Исходная строка: " & txt
End Sub

Функция НОД (наибольший общий делитель) на VBA

Ниже представлен аналог встроенной в Excel 2007 функции НОД (наибольший общий делитель), реализованный средствами VBA в Excel

В прикреплённом файле обратите внимание на формулы в синих и зелёных ячейках - как видите, результаты работы функций (встроенной, и пользовательской) полностью совпадают.

Использовать VBA-аналог функции НОД можно по-разному - как задавая в качестве параметра непрерывный диапазон ячеек, так и перечисляя значения (или ссылки на ячейки) через точку с запятой:

=NOD(A3:B4;B5:C6;B8)
=NOD(A4;B4;72)
=NOD(8;12;2;;6)
=NOD(A6:B7;B9:C10)
=NOD(A8:D8)
=NOD(A9;B11:C13)
=NOD(A9:B10;B11:C12;B14)
=NOD(B6;A6;B10;D10)

Внимание! Функция НОД появилась только в Excel 2007 - поэтому при открытии примера в Excel 2003 (и более ранних версиях) будет работать только пользовательская функция, а встроенная выдаст ошибку #ИМЯ!

Сохранение двумерного массива в файл

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

Sub SaveArray(ByVal Arr, ByVal ColumnNames, ByVal DocName$)
    ' Получает двумерный массив Arr с данными, и массив заголовков столбцов ColumnNames.
    ' Создаёт новый файл в подпапке СФОРМИРОВАННЫЕ ДОКУМЕНТЫ с именем DocName$
    On Error Resume Next
 
    ' создаём подпапку (там же, где текущий файл Excel)
    folder$ = ThisWorkbook.Path & "\СФОРМИРОВАННЫЕ ДОКУМЕНТЫ\": MkDir folder$
 
    Application.ScreenUpdating = False
    Dim sh As Worksheet, wb As Workbook

Авторизация на сайте atsenergo.ru

Данный макрос выполняет 2 HTTP запроса (GET и POST) для авторизации на сайте atsenergo.ru
В случае успешной авторизации, функция возвращает идентификатор сессии,
который используется в дальнейших запросах для скачивания файлов.

Макрос представляется сайту браузером Google Chrome
Чтобы код сработал, надо задать правильные логин-пароль

Макрос опубликован в качестве примера использования объекта WinHttpRequest для работы с сайтами.