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

Загрузка информации из файлов Word (перебор страниц в документе)

Результат обработки файла Word - вывод данных по каждой странице

Функция предназначена для вывода информации (статистики) по всем листам документа Word.

 

В качестве параметра, функция получает ссылку на открытый документ Word.

Результат работы функции представлен на скриншоте.

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

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

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

Макрос загрузки данных о генерации и потреблении электроэнергии

Прогресс-бар для программы загрузки файлов CSV

Программа предназначена для скачивания файлов CSV с сайта за указанный диапазон дат.

Скачиваемые CSV файлы содержат почасовые данные о мощности генерации и потребления ОЭС заданного округа.

Исходными данными для программы выступают 2 даты - начальная и конечная.
Для каждой даты макрос формирует ссылку на требуемый файл CSV, и загружает этот файл из интернета в указанную папку.

В ходе загрузки отображается прогресс-бар.
Скорость загрузки файлов зависит от производительности сервера so-ups.ru, и составляет примерно 10 файлов в секунду.

Макрос загрузки файлов вы найдете во вложении к статье.

Создаваемые файлы получают имена типа

04.01.2000.csv
01.01.2000.csv
02.01.2000.csv
03.01.2000.csv

Все скачанные файлы помещаются в подпапку с именем Файлы CSV, автоматически создаваемую макросом в той же папке, где расположен файл Excel с макросом.

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

Данный макрос предназначен для облегчения анализа длинных текстовых строк.

К примеру, в вашем макросе формируется длинная текстовая строка (вы сцепили значения диапазона ячеек, или загрузили текст веб-страницы в текстовую переменную)

Чтобы проанализировать текст на этапе отладки программы, вам необходимо изучить структуру этого текста, - а это удобнее делать в текстовом редакторе
(например, в Блокноте, хотя лично я использую только Notepad++, поскольку он в тысячу раз удобнее Блокнота)

В этом вам поможет макрос ShowText:

Sub ПримерИспользования_ShowText()
    ' исходный текст любой длины в переменной txt
    txt = "Некая текстовая строка, которую нам надо сохранить в файл" & vbNewLine & _
           "Поскольку текстовая строка весьма длинная, просматривать её в MSGBOX не удобно" & vbNewLine & _
           "Потому мы её просмотрим в Блокноте, предварительно создав временный текстовый файл"
 
    ' сохраняем строку в файл, и открываем файл в Блокноте
    ShowText txt
End Sub

Функция VBA для разделения текстовой строки по языкам

Результат разбиения текстовой строки на русскую и английскую часть при помощи формулы UDF

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

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

Знаки препинания, пробелы, и прочие символы, не относящиеся к конкретному языку, попадают в обе строки.

Например, дана исходная строка "Разработка VBA макросов для программы Microsoft Excel"

Функция возвратит 2 строки: русскую "Разработка макросов для программы", и английскую "VBA Microsoft Excel"

Sub ПримерИспользования()
    txt = "Разработка VBA макросов для программы Microsoft Excel"
    РусскаяЧасть = SplitLanguages(txt)(0)
    АнглийскаяЧасть = SplitLanguages(txt)(1)
 
    Debug.Print РусскаяЧасть    ' результат: "Разработка макросов для программы"
    Debug.Print АнглийскаяЧасть ' результат: "VBA Microsoft Excel"
End Sub