Найти в Дзене
Мечты об удаленке

Макросы в Эксель с примерами кода - шикарный инструмент автоматизации и повышения продуктивности

Оглавление

Устали от рутины? Больше делать ее вам не придется, ведь большую ее часть можно автоматизировать при помощи всем нам известной программы, название которой известно каждому в мире! В этой статье мы расскажем как.

Не секрет, что Microsoft Excel является одним из самых популярных инструментов для работы с данными и создания отчетов. Однако, для достижения максимальной эффективности и автоматизации рутинных задач, пользователи должны уметь пользоваться макросами.

В этой статье мы рассмотрим, что такое макрос в Excel, как его создать, приведем примеры использования для автоматизации задач, а также затронем вопросы безопасности и перспективы развития макросов в будущем.

Что такое макрос в Excel - определение, примеры

Макрос в Excel – это набор команд, которые автоматически выполняются при запуске. Они позволяют пользователям автоматизировать рутинные задачи, такие как форматирование данных, создание отчетов и обновление информации. Использование макросов значительно экономит время и повышает продуктивность работы.

Примеры использования макросов включают в себя автоматическое форматирование данных, создание отчетов, обновление информации и многое другое. Вот вам для наглядности примеры того, как с помощью макросов можно упростить, ускорить и автоматизировать свои рабочие задачи.

Примеры самых популярных макросов в Эксель

Взято из открытых источников.
Взято из открытых источников.

Автоматическое форматирование таблицы

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

Например, макрос может изменить шрифт заголовков на Arial, размер 12, жирный, и добавить границы вокруг ячеек.

Чтобы создать макрос в Excel для автоматического форматирования таблицы, можно использовать следующий пример кода. Он форматирует таблицу, делая её более читаемой и привлекательной.

Sub FormatTable()

' Указываем диапазон таблицы

Dim rng As Range

Set rng = Range("A1:G10") ' Замените на ваш диапазон таблицы

' Форматирование заголовка таблицы

With rng.Rows(1)

.Font.Bold = True

.Font.Size = 12

.Interior.Color = RGB(192, 192, 192) ' Серый цвет

End With

' Форматирование границ таблицы

rng.Borders(xlEdgeTop).LineStyle = xlContinuous

rng.Borders(xlEdgeBottom).LineStyle = xlContinuous

rng.Borders(xlEdgeLeft).LineStyle = xlContinuous

rng.Borders(xlEdgeRight).LineStyle = xlContinuous

rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous

rng.Borders(xlInsideVertical).LineStyle = xlContinuous

' Форматирование текста в ячейках

rng.Font.Size = 11

rng.HorizontalAlignment = xlCenter

rng.VerticalAlignment = xlCenter

' Форматирование фона и текста в чётных строках

Dim i As Long

For i = 2 To rng.Rows.Count

If i Mod 2 = 0 Then

rng.Rows(i).Interior.Color = RGB(235, 235, 235) ' Светло-серый цвет

End If

Next i

End Sub

Чтобы использовать этот макрос, выполните следующие шаги:

  1. Откройте Excel и перейдите в нужный лист.
  2. Нажмите Alt + F11 или перейдите в меню Разработчик > Visual Basic, чтобы открыть редактор VBA.
  3. В редакторе VBA нажмите Insert > Module или используйте клавиатурную комбинацию Alt + F11, чтобы создать новый модуль.
  4. Вставьте код в окно модуля.
  5. Замените "A1:G10" на ваш диапазон таблицы.
  6. Сохраните изменения и закройте редактор VBA.
  7. Вернитесь в Excel и нажмите Alt + F8, чтобы открыть диалоговое окно "Макросы".
  8. Выберите макрос FormatTable и нажмите "Выполнить".

Все! Теперь ваша таблица будет автоматически форматирована согласно указанным настройкам.

Автоматическое заполнение данных

Вы можете создать макрос, который автоматически заполняет определенные поля в таблице на основе данных из других ячеек.

Например, макрос может автоматически заполнить дату и время в определенной ячейке при открытии файла или решить другую, аналогичную задачу. Давайте рассмотрим, как это можно сделать.

Создание макроса

  1. Откройте Excel и перейдите в нужный лист.
  2. Нажмите на "Разработчик" в верхней панели инструментов. Если этой вкладки нет, вам нужно включить её через "Файл" > "Параметры" > "Настройка рабочей среды" > "Расширенные" и установить флажок "Разработчик" в разделе "Настройка ленты".
  3. Нажмите на "Visual Basic" или используйте комбинацию клавиш "Alt + F11". Это откроет окно редактора VBA (Visual Basic for Applications).

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

Допустим, у вас есть таблица с данными в диапазоне A1:E10, и вы хотите автоматически заполнить данные в столбце E, используя данные из столбцов A, B и C. Например, вы хотите сложить значения в этих столбцах.

Sub АвтоматическоеЗаполнение()

Dim i As Integer

For i = 1 To 10

Cells(i, 5).Value = Cells(i, 1).Value + Cells(i, 2).Value + Cells(i, 3).Value

Next i

End Sub

Запуск макроса

  1. Сохраните изменения в редакторе VBA.
  2. Вернитесь в Excel.
  3. Нажмите на "Разработчик" > "Макросы" > "Запустить" и выберите созданный макрос.

Теперь данные в столбце E будут автоматически заполнены суммой значений в столбцах A, B и C.

Автоматическое создание отчетов

Пользователь может создать макрос, который автоматически создает отчеты на основе данных в таблице.

Например, может создать сводную таблицу с аналитикой продаж по регионам и продуктам или выполнить другую, аналогичную задачу.

Чтобы автоматически создавать отчеты в Excel с помощью макроса, вам нужно будет создать макрос, который будет выполнять необходимые действия. Вот пример кода, который создает новый отчет на основе данных из активного листа:

Sub CreateReport()

' Создаем новый лист для отчета

Dim reportSheet As Worksheet

Set reportSheet = ThisWorkbook.Worksheets.Add

' Копируем данные из активного листа в новый лист

ActiveSheet.UsedRange.Copy

reportSheet.Range("A1").Paste

' Форматируем отчет

reportSheet.Name = "Отчет"

reportSheet.Cells.Font.Size = 12

reportSheet.Cells.HorizontalAlignment = xlCenter

' Сохраняем отчет

ThisWorkbook.SaveAs "C:\Отчеты\Отчет_" & Format(Now, "yyyy-MM-dd") & ".xlsx"

End Sub

Чтобы запустить этот макрос, выполните следующие шаги:

  1. Откройте Excel и перейдите в нужный лист.
  2. Нажмите Alt + F11 или перейдите в Разработчик > Visual Basic, чтобы открыть редактор VBA.
  3. В редакторе VBA нажмите Insert > Module или используйте клавиатурную комбинацию Alt + F11, чтобы открыть новое окно модуля.
  4. Вставьте приведенный выше код в окно модуля.
  5. Сохраните изменения, нажав File > Save или используя клавиатурную комбинацию Ctrl + S.
  6. Закройте редактор VBA.
  7. Вернитесь в Excel и перейдите в Разработчик > Макросы или используйте клавиатурную комбинацию Alt + F8.
  8. В открывшемся окне выберите макрос CreateReport и нажмите Run.

Этот макрос создаст новый лист с копией данных из активного листа, сформирует отчет и сохранит его в указанной папке с текущей датой в названии файла.

Автоматическое сохранение и отправка файлов

Вы можете создать макрос, который автоматически сохраняет файл в определенной папке и отправляет его по электронной почте.

Например, может сохранить отчет в папку на сервере и отправить его руководителю по электронной почте.

Чтобы автоматически сохранять и отправлять файлы в Excel, можно использовать разные макросы. Вот пример кода, который сохраняет активный файл и отправляет его по электронной почте:

Sub AutoSaveAndSendFile()

Dim olApp As Object

Dim olMail As Object

Dim strFile As String

Dim strSubject As String

Dim strBody As String

Dim strTo As String

' Настройки

strFile = "C:\Путь\К\Файлу.xlsx" ' Путь к файлу

strSubject = "Тема письма"

strBody = "Текст письма"

strTo = "email@example.com" ' Адрес получателя

' Сохраняем файл

ActiveWorkbook.SaveAs strFile

' Создаем объекты Outlook

Set olApp = CreateObject("Outlook.Application")

Set olMail = olApp.CreateItem(0)

' Настройки письма

With olMail

.To = strTo

.Subject = strSubject

.Body = strBody

.Attachments.Add strFile

.Send

End With

' Освобождаем память

Set olMail = Nothing

Set olApp = Nothing

End Sub

Чтобы использовать этот код, выполните следующие шаги:

  1. Откройте Excel и перейдите в раздел "Разработчик" (если его нет, включите его через "Файл" > "Параметры" > "Настройки" > "Настройки Excel" > "Настройки" > "Разработчик").
  2. Нажмите на "Visual Basic" или используйте комбинацию клавиш "Alt + F11" для открытия редактора VBA.
  3. В редакторе VBA создайте новый модуль (Insert > Module) и вставьте код в окно редактора.
  4. Замените C:\Путь\К\Файлу.xlsx, Тема письма, Текст письма и email@example.com на соответствующие значения.
  5. Сохраните изменения и закройте редактор VBA.
  6. Вернитесь в Excel и сохраните файл.

Теперь, когда вы хотите автоматически сохранить и отправить файл, просто запустите этот макрос. Вы можете назначить ему кнопку или горячую клавишу для удобства и быстроты использования.

Автоматическое обновление данных

При работе с данными вы можете создать макрос, который автоматически обновляет данные в таблице на основе внешних источников.

Любой макрос в Excel — это набор команд, который автоматически выполняет определенные действия. Чтобы создать макрос, который автоматически обновляет данные, нужно выполнить следующие действия и использовать этот пример кода:

  1. Откройте Excel и перейдите в раздел "Разработчик" (если его нет, включите его через "Файл" -> "Параметры" -> "Настройка" -> "Настройка группы" -> "Разработчик").
  2. Нажмите на кнопку "Visual Basic" или используйте комбинацию клавиш "Alt + F11" для открытия редактора Visual Basic.
  3. В редакторе Visual Basic создайте новый модуль (Insert -> Module) и вставьте следующий код:

Sub ОбновитьДанные()

' Укажите диапазон ячеек, который нужно обновить

Dim обновляемыйДиапазон As Range

Set обновляемыйДиапазон = Range("A1:B10") ' Пример диапазона A1:B10

' Обновляем данные

обновляемыйДиапазон.Refresh

End Sub

Далее:

  1. Сохраните модуль и закройте редактор Visual Basic.
  2. Вернитесь в Excel и перейдите в раздел "Разработчик".
  3. Нажмите на кнопку "Запустить" или используйте комбинацию клавиш "Alt + F8", чтобы открыть диалоговое окно "Макросы".
  4. Выберите макрос "ОбновитьДанные" и нажмите "Запустить".

Этот макрос обновит данные в указанном диапазоне ячеек. Если вам нужно автоматически запускать макрос при открытии файла, можно использовать событие Workbook_Open:

  1. В редакторе Visual Basic перейдите в окно "Проект" (Project Explorer) и найдите объект "ThisWorkbook".
  2. Дважды кликните на объекте "ThisWorkbook", чтобы открыть его код.
  3. Вставьте следующий код:

Private Sub Workbook_Open()

Call ОбновитьДанные

End Sub

Сохраните изменения и закройте редактор Visual Basic. Теперь каждый раз, когда вы откроете файл Excel, макрос автоматически обновит данные в указанном диапазоне.

Автоматическое создание графиков и диаграмм

Вы можете создайть макрос, который автоматически создает графики и диаграммы на основе данных в таблице. Например, может создать линейный график продаж за последние 6 месяцев, за год.

Для автоматического создания графиков и диаграмм в Excel с помощью макроса, можно использовать следующий пример кода на VBA (Visual Basic for Applications). Этот код создает столбчатую диаграмму на основе данных в диапазоне A1:B10.

  1. Откройте Excel и перейдите в раздел "Разработчик" (если его нет, включите его через "Файл" > "Параметры" > "Настройки" > "Настройки Excel" > "Настройки" > "Разработчик").
  2. Нажмите на "Visual Basic" или используйте комбинацию клавиш "Alt + F11" для открытия редактора VBA.
  3. В окне "Проект" (Project Explorer) создайте новый модуль (Insert > Module) или используйте существующий.
  4. Вставьте следующий код в окно редактора:

Sub CreateChart()

Dim chart As Chart

Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Лист1") ' Замените "Лист1" на имя вашего листа

' Удаление всех существующих графиков на листе

For Each chart In ws.ChartObjects

chart.Delete

Next chart

' Создание нового графика

Dim rng As Range

Set rng = ws.Range("A1:B10") ' Замените "A1:B10" на ваш диапазон данных

Set chart = ws.Shapes.AddChart.Chart

chart.ChartType = xlColumnClustered

chart.SetSourceData Source:=rng, PlotBy:=xlRows

chart.HasTitle = True

chart.ChartTitle.Text = "Мой график"

' Настройка внешнего вида графика

chart.Legend.Delete

chart.Axes(xlCategory).HasTitle = True

chart.Axes(xlCategory).AxisTitle.Text = "Категории"

chart.Axes(xlValue).HasTitle = True

chart.Axes(xlValue).AxisTitle.Text = "Значения"

' Размещение графика на листе

chart.Parent.Width = 400

chart.Parent.Height = 300

chart.Parent.Top = 100

chart.Parent.Left = 100

End Sub

Далее:

  1. Сохраните модуль (File > Save) и закройте редактор VBA.
  2. Вернитесь в Excel и перейдите на лист, где хотите создать график.
  3. Нажмите "Alt + F8" для открытия диалогового окна "Макросы".
  4. Выберите макрос "CreateChart" и нажмите "Выполнить".

Этот макрос создаст столбчатую диаграмму на основе данных в указанном диапазоне. Вы можете адаптировать код под свои нужды, изменяя тип графика, диапазон данных и другие параметры.

Автоматическое удаление лишних строк и столбцов

Любой пользователь может создать макрос, который автоматически удаляет лишние строки и столбцы в таблице.

Например, макрос может удалить строки с пустыми ячейками или столбцы, которые не используются в анализе. Это очень удобно.

Чтобы автоматически удалить лишние строки и столбцы в Excel с помощью макроса, можно использовать следующий код VBA. Этот код удаляет все пустые строки и столбцы в активном листе.

Sub УдалитьЛишнее()

Dim ws As Worksheet

Dim i As Long, j As Long

Dim lastRow As Long, lastCol As Long

' Установить активный лист

Set ws = ActiveSheet

' Найти последнюю заполненную строку и столбец

lastRow = ws.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

lastCol = ws.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column

' Удалить лишние строки

For i = lastRow + 1 To ws.Rows.Count

ws.Rows(i).Delete

Next i

' Удалить лишние столбцы

For j = lastCol + 1 To ws.Columns.Count

ws.Columns(j).Delete

Next j

End Sub

Чтобы запустить этот макрос, выполните следующие шаги:

  1. Откройте Excel и перейдите в нужный лист.
  2. Нажмите Alt + F11 или перейдите в меню "Разработчик" и выберите "Visual Basic", чтобы открыть редактор VBA.
  3. В редакторе VBA создайте новый модуль, нажав Insert > Module или используя клавиатурную комбинацию Alt + F11.
  4. Вставьте код в окно модуля.
  5. Закройте редактор VBA.
  6. Вернитесь в Excel и перейдите в меню "Разработчик" (если оно не отображается, включите его в настройках Excel).
  7. Нажмите на кнопку "Макросы" и выберите макрос УдалитьЛишнее.
  8. Нажмите "Выполнить", чтобы запустить макрос.

Этот макрос автоматически удалит все пустые строки и столбцы в активном листе. Убедитесь, что вы работаете с правильным листом, так как макрос не запрашивает подтверждения при удалении данных.

Автоматическое создание резервных копий

Вы можете создать макрос, который автоматически создает резервные копии файла в определенной папке. Например, может создать резервную копию файла каждый день в 5 утра.

Для автоматического создания резервных копий в Excel можно использовать этот пример кода, который создает резервную копию активного файла Excel:

Sub CreateBackup()

Dim filePath As String

Dim fileName As String

Dim fileExtension As String

Dim backupPath As String

Dim backupName As String

Dim backupFile As String

' Путь к файлу

filePath = ActiveWorkbook.FullName

' Имя файла без пути

fileName = ActiveWorkbook.Name

' Расширение файла

fileExtension = Right$(ActiveWorkbook.Name, 4)

' Путь для резервной копии

backupPath = "C:\Backup\"

' Имя резервной копии

backupName = Left$(fileName, Len(fileName) - 4) & "_Backup_" & Format(Now, "yyyy-MM-dd_hhmm") & fileExtension

' Полный путь к резервной копии

backupFile = backupPath & backupName

' Создание резервной копии

ActiveWorkbook.SaveCopyAs backupFile

End Sub

Чтобы использовать этот код, выполните следующие шаги:

  1. Откройте Excel и перейдите в меню "Разработчик" (если его нет, включите в настройках).
  2. Нажмите на "Visual Basic" или используйте комбинацию клавиш "Alt + F11" для открытия редактора VBA.
  3. В редакторе VBA создайте новый модуль (Insert > Module) и вставьте код в окно редактора.
  4. Сохраните изменения и закройте редактор VBA.
  5. Вернитесь в Excel и перейдите в меню "Разработчик" > "Макросы" > "Запустить" и выберите макрос "CreateBackup".

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

Как создать макрос в Excel - пошаговая инструкция

Взято из открытых источников.
Взято из открытых источников.

Шаг 1: Включение редактора Visual Basic

  1. Откройте Excel и выберите вкладку "Разработчик" в верхней части экрана.
  2. Если вкладки "Разработчик" нет, перейдите в "Файл" > "Параметры" > "Настройка ленты" и установите флажок рядом с "Разработчик" в разделе "Основные вкладки".

Шаг 2: Создание нового модуля

  1. Нажмите на кнопку "Visual Basic" в группе "Код" на вкладке "Разработчик".
  2. В открывшемся окне Visual Basic Editor (VBE) нажмите на "Вставить" > "Модуль" или используйте клавиатурную комбинацию "Alt + F11" для создания нового модуля.

Шаг 3: Написание кода макроса

В открывшемся окне модуля введите следующий код для создания простого макроса, который будет выводить сообщение "Привет, мир!". Это нужно чтобы вы убедились, что все работает.

Sub ПриветМир()

MsgBox "Привет, мир!"

End Sub

Шаг 4: Сохранение макроса

Сохраните проект, нажав на "Файл" > "Сохранить" или используя клавиатурную комбинацию "Ctrl + S".

Шаг 5: Запуск макроса

  1. Вернитесь в Excel, нажав на "Файл" > "Вернуться в Excel" или используя клавиатурную комбинацию "Alt + F11".
  2. Для запуска макроса перейдите в "Разработчик" > "Макросы" и выберите созданный макрос "Привет Мир".
  3. Нажмите "Выполнить" для запуска макроса.

Шаг 6: Назначение кнопки для макроса

  1. Для удобства запуска макроса можно назначить ему кнопку на панели инструментов.
  2. Перейдите в "Разработчик" > "Кнопки" и перетащите кнопку "Кнопка" на рабочую область.
  3. Нажмите правой кнопкой мыши на созданную кнопку и выберите "Изменить текст" для изменения текста кнопки.
  4. Введите имя макроса в поле "Ассоциация" и нажмите "ОК".

Теперь вы можете запускать макрос, нажимая на созданную кнопку. Это базовый пример создания макроса в Excel, просто для того, чтобы вы поняли как это работает.

Вы можете расширить функциональность макроса, добавляя дополнительный код для выполнения различных задач.

Безопасность макросов

Использование макросов несет в себе определенные риски, такие как возможность заражения компьютера вирусами или вредоносным ПО. Для защиты от таких рисков важно следовать нескольким правилам.

Вот несколько рекомендаций вам, которые помогут обеспечить безопасность макросов:

  1. Ограничение доступа. Установите ограничения на доступ к макросам, чтобы только авторизованные пользователи могли их создавать, редактировать или запускать.
  2. Проверка кода. Регулярно проверяйте код макросов на наличие потенциальных уязвимостей и вирусов. Используйте антивирусное программное обеспечение и инструменты для анализа кода.
  3. Использование безопасных источников. Загружайте макросы только из надежных источников. Избегайте скачивания макросов с неизвестных сайтов или от непроверенных разработчиков.
  4. Обновление программного обеспечения. Регулярно обновляйте программное обеспечение, в котором используются макросы, чтобы убедиться, что все известные уязвимости устранены.
  5. Использование защищенных хранилищ. Храните макросы в защищенных хранилищах, таких как зашифрованные файловые системы или облачные хранилища с сильной аутентификацией.
  6. Логирование и мониторинг. Ведите лог активности макросов и регулярно мониторьте их работу, чтобы обнаружить потенциальные проблемы безопасности.
  7. Обучение пользователей. Обучайтесь сами и обучайте своих сотрудников основам безопасности макросов, чтобы они могли избегать распространенных ошибок, которые могут привести к уязвимостям.

Следуя этим рекомендациям, вы сможете значительно снизить риск возникновения проблем с безопасностью при использовании макросов.

Заключение

Макросы в Excel являются мощным инструментом для автоматизации рутинных задач и повышения продуктивности работы. Однако, их использование требует определенных знаний и соблюдения мер безопасности.

Всегда используйте макросы с умом! Они могут значительно упростить работу, но они также могут привести к ошибкам, если не используются правильно.

Всегда тестировайте их на небольшом наборе данных перед применением их к большому количеству данных.

В будущем ожидается развитие макросов и появление новых возможностей для автоматизации задач в Excel. Мы обязательно будем рассказывать об этом, а пока можете подписаться. Есть очень хорошие курсы, которые учат работать с Эксель на профессиональном уровне. Мы разбирали их в отдельной статье (по ссылке).

Освоив этот навык в совершенстве, можно потом использовать его для дополнительного заработка. О том, как это сделать мы писали в этих статьях:

Будем признательны за лайк. Подписывайтесь на наш телеграмм, в котором мы публикуем анонсы новых курсов, новости, акции и скидки на обучении более чем 50 российских онлайн-школ и вы всегда будете в курсе того, что происходит на российском рынке онлайн-образования!