Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках. Используется рекурсивный перебор папок, до заданного уровня вложенности. К статье прикреплено 2 примера файла с макросами на основе этой функции:
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel. Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря. Поместите файл надстройки из вложения в папку автозагрузки Excel (C:Program FilesMicrosoft OfficeOFFICExxXLSTART). В контекстном меню ячеек появляется новый пункт — «Выбрать дату из календаря«.
Требуется макросом поместить изображение (картинку) на лист Excel? Используйте функцию ВставитьКартинку, которая позволит вам вставить картинку в выбранную ячейку (или диапазон ячеек). При вызове функции можно задать дополнительные дополнительные параметры, указав, следует ли подгонять картинку (или ячейку) по высоте и ширине. В этом примере демонстрируются возможные варианты применения функции вставки картинок:
макрос удалит на листе все строки, в которых содержится искомый текст: (пример — во вложении ConditionalRowsDeleting.xls) Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана ТекстДляПоиска = "Наименование ценности" ' удаляем строки с таким текстом ' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows
Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке. Функция GetFolderPath работает также, только служит для вывода диалогового окна выбора папки.
|
Полезные макросы Excel для автоматизации рутинной работы с примерами применения для разных задач.
Примеры макросов для автоматизации работы
Макросы для фильтра сводной таблицы в Excel.
Как автоматизировать фильтр в сводных таблицах с помощью макроса? Исходные коды макросов для фильтрации и скрытия столбцов в сводной таблице.
Макрос для создания сводной таблицы в Excel.
Как автоматически сгенерировать сводную таблицу с помощью макроса? Исходный код VBA для создания и настройки сводных таблиц на основе исходных данных.
Макросы для изменения формата ячеек в таблице Excel.
Как форматировать ячейки таблицы макросом? Изменение цвета шрифта, заливки и линий границ, выравнивание. Автоматическая настройка ширины столбцов и высоты строк по содержимому с помощью VBA-макроса.
Макрос для копирования и переименования листов Excel.
Как одновременно копировать и переименовывать большое количество листов одним кликом мышкой? Исходный код макроса, который умеет одновременно скопировать и переименовать любое количество листов.
VBA Code Examples
AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!
Search the list below for free Excel VBA code examples complete with explanations.
Some include downloadable files as well. These Excel VBA Macros & Scripts are professionally developed and ready-to-use.
We hope you find this list useful!
Excel Macro Examples
Below you will find a list of basic macro examples for common Excel automation tasks.
Copy and Paste a Row from One Sheet to Another
This super simple macro will copy a row from one sheet to another.
Sub Paste_OneRow()
'Copy and Paste Row
Sheets("sheet1").Range("1:1").Copy Sheets("sheet2").Range("1:1")
Application.CutCopyMode = False
End Sub
Send Email
This useful macro will launch Outlook, draft an email, and attach the ActiveWorkbook.
Sub Send_Mail()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.to = "test@test.com"
.Subject = "Test Email"
.Body = "Message Body"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
List All Sheets in Workbook
This macro will list all sheets in a workbook.
Sub ListSheets()
Dim ws As Worksheet
Dim x As Integer
x = 1
ActiveSheet.Range("A:A").Clear
For Each ws In Worksheets
ActiveSheet.Cells(x, 1) = ws.Name
x = x + 1
Next ws
End Sub
Unhide All Worksheets
This macro will unhide all worksheets.
' Unhide All Worksheets
Sub UnhideAllWoksheets()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
End Sub
Hide All Worksheets Except Active
This macro will hide all worksheets except the active worksheet.
' Hide All Sheets Except Active Sheet
Sub HideAllExceptActiveSheet()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = xlSheetHidden
Next ws
End Sub
Unprotect All Worksheets
This macro example will unprotect all worksheets in a workbook.
' UnProtect All Worksheets
Sub UnProtectAllSheets()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect "password"
Next ws
End Sub
Protect All Worksheets
This macro will protect all worksheets in a workbook.
' Protect All Worksheets
Sub ProtectAllSheets()
Dim ws As Worksheet
For Each ws In Worksheets
ws.protect "password"
Next ws
End Sub
Delete All Shapes
This macro will delete all shapes in a worksheet.
Sub DeleteAllShapes()
Dim GetShape As Shape
For Each GetShape In ActiveSheet.Shapes
GetShape.Delete
Next
End Sub
Delete All Blank Rows in Worksheet
This example macro will delete all blank rows in a worksheet.
Sub DeleteBlankRows()
Dim x As Long
With ActiveSheet
For x = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If WorksheetFunction.CountA(.Rows(x)) = 0 Then
ActiveSheet.Rows(x).Delete
End If
Next
End With
End Sub
Highlight Duplicate Values in Selection
Use this simple macro to highlight all duplicate values in a selection.
' Highlight Duplicate Values in Selection
Sub HighlightDuplicateValues()
Dim myRange As Range
Dim cell As Range
Set myRange = Selection
For Each cell In myRange
If WorksheetFunction.CountIf(myRange, cell.Value) > 1 Then
cell.Interior.ColorIndex = 36
End If
Next cell
End Sub
Highlight Negative Numbers
This macro automates the task of highlighting negative numbers.
' Highlight Negative Numbers
Sub HighlightNegativeNumbers()
Dim myRange As Range
Dim cell As Range
Set myRange = Selection
For Each cell In myRange
If cell.Value < 0 Then
cell.Interior.ColorIndex = 36
End If
Next cell
End Sub
Highlight Alternate Rows
This macro is useful to highlight alternate rows.
' Highlight Alternate Rows
Sub highlightAlternateRows()
Dim cell As Range
Dim myRange As Range
myRange = Selection
For Each cell In myRange.Rows
If cell.Row Mod 2 = 1 Then
cell.Interior.ColorIndex = 36
End If
Next cell
End Sub
Highlight Blank Cells in Selection
This basic macro highlights blank cells in a selection.
' Highlight all Blank Cells in Selection
Sub HighlightBlankCells()
Dim rng As Range
Set rng = Selection
rng.SpecialCells(xlCellTypeBlanks).Interior.Color = vbCyan
End Sub
Excel VBA Macros Examples – Free Download
We’ve created a free VBA (Macros) Code Examples add-in. The add-in contains over 100 ready-to-use macro examples, including the macro examples above!
Download Page
Excel Macro / VBA FAQs
How to write VBA code (Macros) in Excel?
To write VBA code in Excel open up the VBA Editor (ALT + F11). Type “Sub HelloWorld”, Press Enter, and you’ve created a Macro! OR Copy and paste one of the procedures listed on this page into the code window.
What is Excel VBA?
VBA is the programming language used to automate Excel.
How to use VBA to automate Excel?
You use VBA to automate Excel by creating Macros. Macros are blocks of code that complete certain tasks.
Practice VBA
You can practice VBA with our interactive VBA tutorial.
Коллекция макросов Excel VBA
Формат DBF, конечно, давно уже умер, но Федеральные службы РФ все еще охотно
его используют. Например, ФСФМ (ФинМониторинг) требует отправлять ему файлы
«в формате DBF», где 244 поля, и некоторые из них — типа C 254. Большинство
древних утилиток для обработки DBF сходят с ума от таких объемов, а Excel
никогда не сохранял требуемую структуру, более того — еще и даты часто
коверкает. Так что даже открыть и посмотреть такой файл — целая проблема,
а уж подкорректировать и сохранить как предписано — еще сложнее.
В итоге была написана эта программа для ручной обработки DBF, ни на кого не
надеясь. Вернее, это была написана когда-то целая система Банк-Клиент на VBA
Excel, и коллекция разных макросов из нее все еще на что-то годится, гибко
обрабатывая типично русские превратности (типа суммы с разделителями любого
вида, а не только того, что жестко задан в системе, да еще зависит от текущей
языковой раскладки, как это бывает сделано у многих программеров, далеких от
реальных работников).
На картинке выше обрабатывается файл в формате Приложения 4 «Структура файла
передачи ОЭС» к Положению Банка России от 29 августа 2008 г. N 321-П
«О порядке представления кредитными организациями в уполномоченный орган
сведений, предусмотренных Федеральным законом «О противодействии легализации
(отмыванию) доходов, полученных преступным путем, и финансированию
терроризма». Помимо работы с таким форматом, программа также осуществляет
контроль правильности заполнения полей по требованиям этого Положения
несколькими способами.
Вы можете взять готовый бинарный файл XLSM с этой программой из Downloads
и при запуске обязательно разрешить макросы — только тогда появится меню
«Надстройки». Если боитесь запускать чужие бинарные файлы и макросы (и это
правильно!) — открывайте редактор VBA в своем Excel (может понадобится в
Настройках включить меню «Разработчик») и импортируйте туда прилагаемые
исходные тексты (здесь они все в кодировке UTF-8).
Как использовать
Раньше эта программа добавляла свою полосочку с кнопками меню, и все было
замечательно. Затем Microsoft изобрела новый Ribbon, и пользовательское меню
этой программы оказалась задвинута куда подальше — ищите в меню «Надстройки» —
как это показано на скриншоте выше. И не забудьте разрешить макросы — иначе
ничего не появится!
Меню «Надстройки»
- Загрузить — загрузить из файла DBF, указанного в ячейке A1, или запросить
его имя, если там пусто (текущее содержимое будет очищено) - Добавить — добавить из файла DBF, указанного в ячейке A1, или запросить
его имя, если там пусто (текущее содержимое сохранится и будет дополнено) - Просмотр — просмотр всех полей на одной форме с индикацией ошибок
- Печать — преобразовать выделенную строку в таблицу на отдельном листе
для печати (одна из самых насущных функций и нравится проверяющим из ЦБ) - Проверить — проверить ячейку за ячейкой по заранее составленному перечню
правил с индикацией нарушения и возможностью исправить - Сохранить — сохранить в файл DBF, указанный в ячейке A1, или запросить
его имя, если там пусто (файл будет сформирован с той структурой, которая в
строке 3 — описание см. ниже) - Передать в Комиту — сохранить в файл DBF и передать в папку для импорта
в Комиту (специализированный АРМ Финмониторинга) - Отправить в ЦБ — сохранить в файл DBF и передать в папку для отправки
на подпись, шифрование и далее в ПТК ПСД для отправки в ЦБ
Загрузка и сохранение
Если в ячейке A1 есть имя файла, при нажатии кнопки «Загрузить» — будет
загружен именно этот файл. Если ячейка пуста — будет диалог выбора файла.
При сохранении — аналогично. Файлы подразумеваются структуры DBF, хотя
расширение их иное!
И никогда не сохраняйте DBF через меню самого Excel — он запишет в своей
собственной структуре, подогнанной под текущие данные, но не в той, которая
регламентирована.
Работа со структурой
Одна из строк (третья на скриншоте) — структура загруженного DBF-файла,
состоящая из столбцов-полей следующего вида:
<Название поля> <Тип поля><Размер поля>
Название отделяется от типа (поддерживаются C, D, L, N) пробелом, размер
(в байтах) слитно с типом (у N может быть дробная часть после точки).
Тип и размер — или Вы знаете, о чем речь, или это есть в документации по
заполнению отчетности. Таким образом, Вы можете прочитать любой DBF-файл
(без МЕМО), создать новый или сохранить с новой структурой.
Данные Вы можете копировать и вставлять какие угодно. Сохранение будет
происходить в соответствии с указанной выше строкой описания структуры.
Полезные мелочи
Попутно эта программа (и это основная ее нынешняя функция) проверяет данные
по некоему набору логических правил, сильно облегчая жизнь отделу
финмониторинга — даже в условиях существования других покупных монстров
типа упомянутой Комиты, которые именно эти-то правила и пропускают мимо.
Все прочие исходные файлы, уже никак не относящиеся к этой задаче, убраны в
папку BClient — на случай, если понадобится еще что-то из наработанного
ранее.
Также там есть папка Turniket, где находится модуль подчистки грязных
входных данных из разных источников СКУД и готовится финальная отчетная
таблица с учетом отработанного времени сотрудниками для отдела кадров.
Исходные тексты модулей
Microsoft Excel Objects
- ЭтаКнига.cls — всего две функции: добавить меню при загрузке Workbook и
убрать его по ее закрытию
Forms
- UserForm1.frm — форма полноэкранного просмотра записей
Modules
- Base36.bas — работа с 36-ричными числами, популярными в Банке России
- Bytes.bas — работа с байтами — для CWinDos
- ChkData.bas — правила логического контроля настраивать здесь
- CWinDos.bas — ручная перекодировка 1251-866 с псевдографикой и фишками ЦБ
- DBF3x.bas — ручная работа в файлами DBF версии 3, загрузка и раскраска их,
сохранение с заданной структурой - Export.bas — пути экспорта
- KeyValue.bas — вычисления ключа счета, ИНН
- Main.bas — начальные инициализации классов, действия по завершении
- MenuBar.bas — пункты меню
- MiscFiles.bas — есть ли файл на диске, выбор файла и т.п.
- MsgBoxes.bas — разные красивые диалоги
- Printf.bas — аналог функции из языка Си
- RuSumStr.bas — чтение суммы в любом формате, сумма прописью — для платежек
- SheetUtils.bas — набросок макроса для сокращенной печати
- StrFiles.bas — работа с именами файловой системы
- StrUtils.bas — работа со строками
- TextFile.bas — работа с текстовыми файлами
Class Modules
- CApp.cls — класс приложения с константами и параметрами
License
Licensed under the Apache License, Version 2.0.
Сборник готовых макросов VBA |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |