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

Функция 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

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

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

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

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

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

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

Диалоговое окно выбора цвета (функция VBA для запроса цвета заливки)

Настройки цвета заливки на форме VBA

Данная функция позволяет запрашивать у пользователя цвет заливки.

Функция возвращает целое число - значение цвета в формате RGB

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

Sub ОкраскаЯчейкиВВыбранныйЦвет()
    On Error Resume Next
    DefaultColor& = vbRed    ' цвет по-умолчанию
    NewColor& = PickNewColor(DefaultColor&)    ' выбираем новый цвет
    
    ActiveCell.Interior.Color = NewColor&    ' красим активную ячейку
End Sub

Код функции:

Function PickNewColor(Optional ByVal i_OldColor As Double = xlNone) As Double
    ' функция отображает диалоговое окно выбора цвета заливки
    ' и возвращает значение выбранного цвета
    On Error Resume Next:
    PickNewColor = i_OldColor
    Const BGColor As Long = 13160660, ColorIndexLast As Long = 32
    Dim myOrgColor As Double, myNewColor As Double, WB As Workbook
    Dim myRGB_R As Integer, myRGB_G As Integer, myRGB_B As Integer
    If ActiveWorkbook Is Nothing Then Application.ScreenUpdating = False: Set WB = Workbooks.Add
    myOrgColor = ActiveWorkbook.Colors(ColorIndexLast)    'save original palette color

    i_Color = IIf(i_OldColor = xlNone, BGColor, i_OldColor): myRGB_R = i_Color Mod 256
    i_Color = i_Color \ 256: myRGB_G = i_Color Mod 256
    i_Color = i_Color \ 256: myRGB_B = i_Color Mod 256
    ActiveWorkbook.ResetColors    'AppActivate Application.Name
    If Application.Dialogs(xlDialogEditColor).Show(ColorIndexLast, myRGB_R, myRGB_G, myRGB_B) Then
        PickNewColor = ActiveWorkbook.Colors(ColorIndexLast)
        ThisWorkbook.Colors(ColorIndexLast) = myOrgColor
    End If
    If Not WB Is Nothing Then WB.Close False: Application.ScreenUpdating = True
End Function

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

Прогресс-бар для программы загрузки файлов 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 с макросом.

Выгрузка списка макросов (или всего кода целиком) из проекта VBA в текстовый файл

Sub print_all_sub_and_function_names_of_current_project()
' пишет названия функций программы в файл c:\output.txt

Sub print_all_code_of_current_project()
' пишет весь код данной программы в файл c:\code.vb