Макросы и программы для Excel в категории «Разное»

Разнообразные программы и макросы, полезные надстройки и примеры кода VBA
  • Макрос VBA загрузки списка файлов из папки
    Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках. Используется рекурсивный перебор папок, до заданного уровня вложенности. В процессе перебора папок, пути у найденным файлам помещаются в коллекцию (объект типа Collection) для последующего перебора. К статье прикреплено 2 примера файла с макросами на основе этой...
  • Выделение разными цветами заливки повторяющихся значений (дубликатов)
    Как известно, в последних версиях Excel легко выделить дубликаты цветом, - для этого есть специальная опция в «условном форматировании». Достаточно выделить диапазон, задать цвет заливки, - и все повторяющиеся (или, наоборот, уникальные) значения будут выделены. Но иногда требуется, чтобы различные повторяющиеся значения были выделены РАЗНЫМИ ЦВЕТАМИ. В этом случае, без макросов не...
  • Макрос предназначен для создания текстовых файлов в кодировке UTF-8. Исходными данными является таблица Excel из 12 столбцов. Сначала, макрос создаёт папку для будущих текстовых файлов. Папка создаётся в том же каталоге, где расположена книга Excel. Далее, для каждой строки таблицы, макрос формирует подпапку, используя в качестве её названия текст из 7-го столбца таблицы. И потом, когда папка...
  • Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист. В прикреплённом файле, на первом листе ("исходные данные"), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации) Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные...
  • Макрос позволяет увеличивать / уменьшать изображения на листе Excel по щелчку мыши.   Для использования макроса, скопируйте в свой файл модуль с кодом (просто перетащив его мышкой из прикреплённого файла), выделите все картинки в своём файле Excel, и назначьте им макрос ZoomImage Чтобы выделить все изображения, проделайте следующее: нажмите Ctrl + G (для появления диалогового окна...
  • Скриншот программы, позволяющей прикреплять файлы к книге Excel
    Можно ли прикрепить (вложить) произвольные файлы в обычную книгу Excel? А потом извлечь эти файлы в заданную папку, и работать с ними? Казалось бы, Excel такого не позволяет. (а если и позволяет, то извлечь вложенные файлы без из запуска - весьма проблематично) Но, при помощи макросов, можно реализовать что угодно (и сохранение\извлечение файлов в том числе) Теперь прикрепить к книге Excel...
  • К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым: (количество файлов, и количество строк данных в каждом файле не ограничено) 1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;1 1c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1 1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1 А надо из всего этого...
  • Данный макрос автоматизирует процесс переключения раскладки клавиатуры (смену языков ввода) при работе с таблицами в Excel. К примеру, вы заносите данные в таблицу, где в некоторые столбцы требуется вводить русские слова (фамилия, имя, и т.п.), а в другие столбцы - английские (марка и модель авто, и т.д.) Чтобы каждый раз не переключать раскладку вручную - можно воспользоваться WinAPI...
  • Функция GetFolder вызывает диалоговое окно выбора папки в макросах на VBA. Эту функцию я использую во многих проектах, где необходимо давать пользователю возможность выбора папки. Чтобы не тревожить пользователя диалоговым окном выбора папки при каждом запуске макроса, описываемая в статье функция GetFolder сохраняет в реестре путь к ранее выбранной папке, и при повторном обращении...
  • Результат транслитерации выделенного диапазона ячеек
    Надстройка для транслитерации или кодирования (замены символов их кодами) выделенного диапазона ячеек Excel При запуске надстройки в Excel формируется панель инструментов, при помощи которой можно выполнять следующие действия: Нажатием кнопки RU->EN выполнить транслитерацию выделенного диапазона ячеек Нажатием кнопки EN->RU выполнить транслитерацию выделенного диапазона ячеек В...
  • Данный макрос производит поиск фигур (графических объектов) на всех листах текущей книги Excel, и выводит следующую информацию по каждой найденной фигуре: Название фигуры (графического объекта) Координаты верхнего левого угла Координаты правого нижнего угла Размеры фигуры (ширина, высота) Тип фигуры (свойство Type типа MsoShapeType) Тип автофигуры (свойство AutoShapeType...
  • Соответствие клавиш клавиатуры компьютера нотам (как на клавиатуре баяна)
    Самый простой вариант извлечь звук при помощи макроса VBA: Shell "Cmd.exe /c echo " & Chr(7), vbHide Эта команда вводит в консоль символ с кодом 7 (ввод этого символа вызывает звуковой сигнал) Из спикера компьютера (не из динамиков!) прозвучит короткий однотональный звуковой сигнал. Если же нужен звук подлиннее - то можно «ввести» в консоль несколько символов Chr(7). Например, эта...
  • Функция TextFile2Array предназначена для преобразования файла CSV в двумерный массив Очень часто при работе с текстовыми файлами (и, в частности, с файлами CSV) приходится их загружать на лист Excel, предварительно производя фильтрацию данных в этом файле. Чтобы упростить весь процесс - от выбора файла CSV в диалоговом окне, до разбиения загруженного из файла текста в двумерный массив, и была...
  • При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы. Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания: Function Replace_symbols(ByVal txt As String) As String St$ = "~!@/\#$%^&*=|`""...
  • Как программно (макросом) задать ширину столбца в пикселах Вроде бы - элементарное действие... но нет, здесь Microsoft нам усложнил задачу. Получить ширину столбца в пикселах - не проблема, для этого есть свойство Width: MsgBox "Ширина столбца с активной ячейкой: " & ActiveCell.Width Но, увы, это свойство доступно только для чтения, - а для назначения ширины столбца нам придётся...
  • Скриншот формы поиска файлов в заданной папке
    Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel. Автор: VictorM Особенности надстройки: задаваемая пользователем глубина поиска в подпапках простановка гиперссылок на листе Excel на найденные файлы вывод дополнительных характеристик файла (размер файла, дата создания файла, полный путь) изменяемая маска поиска (поиск по части имени файла, по...
  • В данной статье опубликованы макросы для уменьшения размеров изображения (в графическом файле), и для получения размеров картинки из файла.   Эти макросы нашли применение в универсальной надстройке для вставки картинок в Excel Там они используются для выполнения функции сжатия изображений перед вставкой (сначала рассчитываются нужные размеры изображения на листе Excel, затем...
  • Отображение этапов работ на шкале времени
    Программа предназначена для отображения этапов выполнения работ на шкале времени в Excel. В качестве исходных данных выступает таблица, заголовками которой являются названия этапов, а в строках, для каждой работы, указана дата каждого этапа. Шкала времени состоит из двух строк, заполненных датами при помощи формул. В первой строке - дата начала временного интервала, во второй строке - дата его...
  • С помощью нижеуказанного макроса, в примечание активной ячейки можно добавить изображение. При выделении данной ячейки - изображение будет отображаться в комментарии. Данный код добавляет в контекстное меню ячейки новое действие "Вставить изображение" Нижеуказанный макрос лучше всего поместить в "личную книгу макросов" (PERSONAL) В модуль "ЭтаКнига" файла PERSONAL....
  • Функция предназначена для получения двумерного массива данных из видимых строк листа Excel.   Например, нас интересует массив, начиная со второй строки, шириной 5 столбцов. Если все строки на листе - видимые, то все делается просто, одной строкой кода: arr = Range(Range("a2"), Range("a" & Rows.Count).End(xlUp)).Resize(, 5).Value   А если на листе включен...
  • При помощи функции Environ() можно получить значение переменной окружения Windows   Этот макрос создаст новую книгу, и выведет в неё список из 31 переменной, с примерами вызова функции для получения каждого из параметров: Sub ВывестиПеременныеОкружения() On Error Resume Next Dim sh As Worksheet, param$ Application.ScreenUpdating = False: Set sh = Workbooks.Add.Worksheets(1...
  • Функция ShapesInRange предназначена для получения объекта типа ShapeRange, содержащего все картинки в заданном диапазоне ячеек листа Excel   Пример использования функции ShapesInRange: Sub DeleteShapesInRange() Dim ra As Range: Set ra = Columns(6) ' задаём диапазон для поиска картинок On Error Resume Next ' на случай, если картинок в заданном диапазоне нет ShapesInRange(ra)....
  • Получение длительности медиафайла формулой Excel
    Узнать продолжительность (время) звучания аудиофайла (MP3, WAV и т.д.), или длительность видеофайла (видеоролика) из Excel совсем несложно. Используйте функцию ПродолжительностьМедиафайла: (функцию можно использовать как в макросах, так и на листе Excel) Sub Пример_Использования_Функции_ПродолжительностьМедиафайла() Путь = "E:\Music\MODERN_TALKING With_a_little_love.mp3"...
  • В данной статье приведён код 2 функций, которые позволят вам найти на веб-странице нужные HTML теги, и преобразовать HTML в текст Особенность этого кода, - использование регулярных выражений (Regexp) для поиска в HTML Эти функции лежат в основе моей надстройки «Парсер сайтов» Пример использования: ' в переменной txt находится исходный код веб-страницы (целиком, или его часть) ' ищем div id=...
  • Данные с сайта superjob.ru, загужаемые в таблицу Excel
    Программа предназначена для импорта данных о соискателях с сайта superjob.ru В качестве исходных данных для макроса, используется ссылка на результат поиска на сайте superjob.ru (которую можно получить, забив искомый текст в строке поиска сайта, и скопировав URL страницы результатов поиска из адресной строки браузера). Во время выполнения кода, происходит авторизация на сайте путем...
  • Данный код позволяет выполнять проверку корректности ввода числового значения в текстовое поле (textbox) на форме, автоматически блокируя ввод запрещенных символов   Используется событие KeyPress элемента управления TextBox Допустимые символы: цифры от 0 до 9, точка (запятая автоматически заменяется на точку), знак «минус» (перед числом) Предполагается, что текстовое поле...
  • Sub ПримерИспользования() ' задаём полный путь к обрабатываемому файлу ПутьКФайлу$ = ThisWorkbook.Path & "\" & "Contract.XLS"   Application.ScreenUpdating = False ' отключаем обновление экрана arr = LoadArrayFromWorkbook(ПутьКФайлу$, "a2", 30) ' загружаем данные ' выводим результаты в окно Immediate Debug.Print "...
  • Функция LastFile предназначена для поиска самого свежего файла в заданной папке (производится поиск файлов по маске, и из найденных файлов выбирается тот, дата последнего изменения которого максимальна)   Пример использования функции: Sub ПримерИспользованияФункции_LastFile() ' Ищем на рабочем столе все файлы TXT, и выводим имя самого нового файла. ' Просматриваются папки с...
  • Данная функция позволяет проверить, доступен ли тот или иной веб-ресурс с вашего компьютера, и получить код состояния HTTP Как известно, при переходе по ссылке (URL), веб-сервер возвращает код состояния HTTP. Наиболее популярный коды ответа веб-сервера: (перечень всех кодов состояния можно посмотреть в Википедии) 200 OK («хорошо») 403 Forbidden («запрещено...
  • Функция FileToVBAFunction предназначена для сохранения произвольного файла в виде VBA кода. В любой момент вы можете вызвать сгенерированную функцию - она моментально создаст во временной папке необходимый файл, и вернет путь к созданному файлу. Основное применение функции - сохранение небольших файлов (в основном, графических - иконок и маленьких картинок) в книге Excel. Для того, чтобы...
  • Скриншот результатов отображения промежуточных этапов вычислений формулы Excel
    Пользовательская функция ParseFormula предназначена для отображения промежуточных результатов вычисления простейших формул в Excel.   В данной версии функции ParseFormula поддерживаются только 2 формулы: СУММ и ПРОИЗВЕД Пример её использования - в прикреплённом файле. В примере в голубых ячейках - исходные данные для формул, в оранжевых ячейках - формулы типа =ПРОИЗВЕД(A1...
  • Не мой макрос, - нашел в интернете Вроде работает как надо Используется на листе Excel как формула =ДробноеЧислоПрописью(A1) Function ДробноеЧислоПрописью(chislo) ' взято здесь: forum .vingrad .ru/act-ST/f-131/t-106328.html# On Error Resume Next chislo2 = Int(chislo) chislo3 = Round((chislo - chislo2), 3) '-остаток LengthChislo = Len(chislo2) ' - определяем число циклов...
  • К примеру, вам хотелось бы перед отправкой очередного файла (книги) Excel указать в его свойствах, кем, где и когда этот файл создан, а также прописать туда же и другие характеристики файла. В этом случае вам поможет следующий макрос: Sub ПримерИспользованияПользовательскихСвойствКнигиExcel() DDocALL ActiveWorkbook ' удаляем все ранее назначенные пользовательские свойства ' и...
  • В данной статье собрано несколько примеров установки прозрачности форм (UserForm) Во всех файлах для установки прозрачности используется WinAPI функция SetLayeredWindowAttributes Примеры взять с форума ПланетаExcel, и немного переработаны. Прозрачность форм можно задавать в широком диапазоне - от 0 (полностью прозрачная форма) до 255 (непрозрачная) Также добавлен пример установки...
  • Макрос выводит на активный лист (в первый столбец) случайные email Я использовал этот макрос для тестирования программы рассылки писем. Sub GenerateEmails() On Error Resume Next: Err.Clear Dim ra As Range: Set ra = Range([A2], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp))) Dim cell As Range txt = "...
  • Функция позволяет произвести замену в текстовой строке кодов символов Unicode на их значения   В функции используются регулярные выражения (RegExp) Пример использования функции ReplaceUnicodeChars: Sub ЗаменаКодовСимволовВСтроке() ' исходная текстовая строка, содержащая коды символов Unicode txt$ = "Санаторий\u2013профилакторий \u201dЛесная сказка\u201d приглашает Вас!...
  • Функция принимает в качестве параметра arr двумерный массив, и разбивает его на несколько массивов, группируя строки по значению столбца SplitColumn& Сколько есть уникальных значений в столбце SplitColumn&, удовлетворяющих маске Mask$, - столько двумерных массивов будет возвращено функцией в виде коллекции Например, если есть исходный массив размерами 100*5, в котором во втором столбце...
  • Данные функции могут быть полезны, если вы хотите спрятать некоторые значения в книге Excel Функция SaveValue предназначена для создания (изменения существующих) имён в книге, а функция GetValue - для получения ранее сохранённых значений. Sub SaveValue(ByRef WB As Workbook, ByVal Parameter As String, ByVal NewValue As String) ' создаёт в книге WB скрытое имя Parameter со значением NewValue...
  • Скриншот листа коммерческого предложения - описание, фото и карта рекламной конструкции
    Программа предназначена для формирования коммерческих предложений по наружной рекламе. В качестве исходных данных выступает файл Excel со списком рекламных объектов. Список объектов должен содержать следующую информацию (в отдельных столбцах): адрес рекламной конструкции (щита) сторона рекламного щита или перетяжки (А, Б, В, и т.п.) ссылки на фото и карту рекламной конструкции (...
  • Настройки цвета заливки на форме VBA
    Данная функция позволяет запрашивать у пользователя цвет заливки. Функция возвращает целое число - значение цвета в формате RGB Пример использования: Sub ОкраскаЯчейкиВВыбранныйЦвет() On Error Resume Next DefaultColor& = vbRed ' цвет по-умолчанию NewColor& = PickNewColor(DefaultColor&) ' выбираем новый цвет ActiveCell.Interior.Color = NewColor& '...
  • Вашему вниманию предлагается шестнадцатеричный редактор HexEdit. Для чего нужен шестнадцатеричный редактор? Для просмотра и корректировки любой информации, содержащейся в файлах. Кому это может быть нужно и при каких обстоятельствах? Например, тому, кто хочет заглянуть внутрь файла (любой структуры) и что-либо найти (и поправить). НехEdit будет особенно полезен в тех случаях, когда политика...
  • Данный код выводит список полных путей файлов, выбранных пользователем в диалоговом окне, отсортированный по дате создания файла: Function GetFilenamesCollection(Optional ByVal Title As String = "Выберите файлы для обработки", _ Optional ByVal InitialPath As String = "c:\") As FileDialogSelectedItems ' функция выводит диалоговое окно выбора...
  • Макрос предназначен для округления значений в заданном столбце массива, с заданной точностью и направлением округления Sub Пример_Округления_Массива() Dim arr As Variant   ' считываем данные из диапазона ячеек в массив arr = Range("a2:c20").value   ' переводим весь второй столбец в числа (на всякий случай) For i = LBound(arr) To UBound(arr) arr(i, 2...
  • В данной статье приведены макросы, работающие только при установленном .NET Framework Перестановка строк в обратном порядке в текстовом файле: Sub ReverseTextFile()   Filename$ = "c:\test.txt" ' строки в этом файле будут переставлены в обратном порядке Set FSO = CreateObject("Scripting.FileSystemObject") Set objFile = FSO.OpenTextFile(Filename$, 1)...
  • Функция ParseColumnsStringEx предназначена для преобразования введенного пользователем списка столбцов в одномерный массив числовых значений. Назначение функции: исключить ошибки пользовательского ввода, преобразовать буквенные названия столбцов в числовые значения. Пример использования: Private Sub ПримерИспользования_ParseColumnsStringEx() Dim txt$, txt1$, txt2$ ' исходная строка с...