Макросы VBA Excel
В этой статье опубликованы различные вспомогательные функции на VBA, которые порой помогают в работе.
|
|||
Функция RandomRowsFromArray предназначена для выборки из двумерного массива случайных строк.К примеру, исходный массив (таблица) имеет размер 1000*20 (1000 строк, и 20 столбцов) В прикреплённом к статье файле вы найдете пример такого макроса: Sub ПримерИспользования_RandomRowsFromArray() ' считываем массив с листа arr = [a1:e20].Value ' считываем количество строк в выборке Количество = Val([NewCount]) ' выбираем строки из массива случайным образом (получаем новый массив newarr) newarr = RandomRowsFromArray(arr, Количество) ' заносим результат на лист (справа от исходных данных) Range("g1").Resize(UBound(newarr, 1), UBound(newarr, 2)).Value = newarr End Sub
|
|||
Макрос предназначен для сохранения в реестре (и изменения через форму) настроек почтового аккаунта.Эти настройки используются макросом рассылки почты Send_Mail При запуске формы, она считывает из реестра Windows ранее сохранённые настройки.
Данный подход позволяет избежать хранения конфиденциальных данных в коде программы, что важно, если вы передаёте файл с программой рассылки почты другим людям.
|
|||
Макрос предназначен для поиска текста из выделенных ячеек в поисковой системе Google.Функция поиска доступна из контекстного меню ячеек:
Как вы можете видеть на скриншоте, есть возможность выбора браузера.
|
|||
При загрузке данных в Excel с веб-страниц порой оказывается, что некоторая необходимая нам информация (например, адреса электронной почты) представлена в графическом виде (текст на картинке).
|
|||
Сортировка двумерного массива по нулевому столбцу Public Function CoolSort(SourceArr As Variant) As Variant ' сортировка двумерного массива по нулевому столбцу Dim Check As Boolean, iCount As Integer, jCount As Integer, nCount As Integer ReDim tmpArr(UBound(SourceArr, 2)) As Variant Do Until Check Check = True For iCount = LBound(SourceArr, 1) To UBound(SourceArr, 1) - 1 If Val(SourceArr(iCount, 0)) > Val(SourceArr(iCount + 1, 0)) Then For jCount = LBound(SourceArr, 2) To UBound(SourceArr, 2)
|
|||
Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.В прикреплённом файле, на первом листе ("исходные данные"), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации) Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные адреса email в таблицу на втором листе ("результат")Конечно, не помешало бы ещё проверить все найденные адреса почты на корректность (на соответствие стандартам RFC 5322 и RFC 5321), Для поиска адресов email используются регулярные выражения (RegExp)
|
|||
При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы. Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания: Function Replace_symbols(ByVal txt As String) As String St$ = "~!@/\#$%^&*=|`""" For i% = 1 To Len(St$) txt = Replace(txt, Mid(St$, i, 1), "_") Next Replace_symbols = txt End Function Пример использования: ' формируем путь к новому файлу
|
|||
Сегодня мы поговорим о том, как добиться автоматического открытия вашего файла Excel (книги или надстройки) при запуске приложения Microsoft ExcelСпособов добавить файл в автозагрузку Excel достаточно много, поэтому мы рассмотрим только самые основные:
Начнём с папки автозагрузки (точнее, с папок, поскольку их может быть несколько)
|
|||
В некоторых случаях, при запуске файла Excel с макросами (к примеру, надстройки Excel), для обеспечения работы макросов требуется, чтобы был полный доступ к файлу (а не "только чтение"), или же файл был сохранён в заданной папке.Полный доступ к файлу необходим, например, для работы автоматического обновления надстройки, В этом вам поможет макрос SaveAddinToPermanentPath, который проверяет, из какой папки запущен файл, и предлагает, в случае необходимости, переместить файл в постоянную папкуВ качестве постоянной папки макрос использует папку «UserLibrary», путь к которой можно получить из свойства Application.UserLibraryPath На моём компьютере, эта папка расположена по пути Код макроса SaveAddinToPermanentPath:
|
|||
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »

