Автоматизация Excel

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

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

Установка готовых макросов

Для установки макроса перейдите в меню «Готовые макросы»

В левом списке выберите нужную игру/задачу.

В правом списке выберите макрос или скрипт который хотите установить, нажмите на нём правой клавишей мышки и во всплывающем меню нажмите «Установить».

После этого появится окно сообщающее о результатах установки и макрос/скрипт появится в соответствующем редакторе.

Узнать подробнее о макросе/скрипте

Перед тем как устанавливать макрос/скрипт, вы можете изучить его описание и прочитать отзывы.

Для этого правой клавишей мыши нажмите на интересующий макрос или скрипт и во всплывающем меню нажмите «Подробнее».

Так же можно нажать кнопку «Подробнее» в нижнем правом углу или просто 2 раза кликнуть мышкой по строчке с макросом/скриптом.

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

1. Многие таблицы могут содержать в ячейках одни и те же данные. При заполнении таких таблиц Excelпроявляет высокую дружественность. Уже по первой букве программа «догадывается», что хочет ввести пользователь.

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

3. После этого следует установить указатель мыши на правый нижний угол рамки текущей ячейки. Это маркер заполнения. Указатель мыши примет форму крестика.

4. Перетаскивание маркера заполнения позволяет «размножить» содержимое текущей ячейки на несколько ячеек в столбце или строке. Если содержимое ячейки представляет собой число, оно будет автоматически увеличено на единицу. По ходу перетаскивания содержимое последней ячейки отображается в небольшом всплывающем окне.

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

5. Если требуется более сложный закон изменения последовательности значений, процедура несколько усложняется. Выбрав первую ячейку и введя в нее нужное значение, следует дать команду Правка >Заполнить>Прогрессия. Откроется диалоговое окно Прогрессия, позволяющее указать как направление заполнения, так и параметры прогрессии.

6. Переключатели в группе Расположение определяют направление заполнения, а на панели Тип выбирают тип значений. Панель Единицы позволяет задать дополнительные условия, если ячейки содержат даты.

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

2.4.8. Создание и использование простых формул

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

Программа Excelрассматривает содержимое ячейки как формулу, если оно начинается со знака равенства (=). Тем самым, чтобы начать ввод формулы в ячейку, достаточно нажать клавишу «=», Однако вводить формулы более удобно, если в строке формул щелкнуть на кнопке Изменить формулу. В этом случае непосредственно под строкой формул открывается Палитра формул, содержащая вычисленное значение указанной формулы.

Не стоит пугаться слова «формула». Под формулой понимается всего лишь набор чисел и ссылок на числовые ячейки, соединенных знаками математических операций. Чтобы задать ссылку на ячейку, надо указать в формуле ее имя. Это можно сделать вручную или щелчком на соответствующей ячейке по ходу ввода формулы.

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

При работе с Excelважно не производить никаких вычислений «в уме». Даже если рассчитать значение, хранящееся в ячейке, совсем нетрудно, все равно надо использовать формулу.

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

Приветствую всех.

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Появилась вкладка.

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

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

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/»View code».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Sub FormatPrice()
End Sub

Напишем Hello World:

Sub FormatPrice()
MsgBox «Hello World!»
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

‘ Процедура. Ничего не возвращает
‘ Перегрузка в VBA отсутствует
Sub foo(a As String, b As String)
‘ Exit Sub ‘ Это значит «выйти из процедуры»
MsgBox a + «;» + b
End Sub
‘ Функция. Вовращает Integer
Function LengthSqr(x As Integer, y As Integer) As Integer
‘ Exit Function
LengthSqr = x * x + y * y
End Function
Sub FormatPrice()
Dim s1 As String, s2 As String
s1 = «str1»
s2 = «str2»
If s1 <> s2 Then
foo «123», «456» ‘ Скобки при вызове процедур запрещены
End If
Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i
Dim x As Double
x = Val(«1.234») ‘ Парсинг чисел
x = x + 10
MsgBox x
On Error Resume Next ‘ Обработка ошибок — игнорировать все ошибки
x = 5 / 0
MsgBox x
On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne
Err:
MsgBox «Err!»
ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок
‘ Циклы бывает, какие захотите
Do While True
Exit Do
Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len(«abc»), Val(«4»))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select
‘ Двухмерный массив.
‘ Можно также менять размеры командой ReDim (Preserve) — см. google

Dim arr(1 to 10, 5 to 6) As Integer
arr(1, 6) = 8
Dim coll As New Collection
Dim coll2 As Collection
coll.Add «item», «key»
Set coll2 = coll ‘ Все присваивания объектов должны производится командой Set
MsgBox coll2(«key»)
Set coll2 = New Collection
MsgBox coll2.Count
End Sub

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

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

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
Sheets(«result»).Cells.Clear
Sheets(«data»).Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets(«result»).Activate
Dim r As Range
Set r = Range(«A1»)
r.Value = «123»
Set r = Range(«A3,A5»)
r.Font.Color = vbRed
r.Value = «456»
Set r = Range(«A6:A7»)
r.Value = «=A1+A3»

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String
Sheets(«data»).Activate
I = 2
Do While True
If GetCell(0, I).Value = «» Then Exit Do
‘ …
I = I + 1
Loop
End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer
For I2 = 1 To GroupsCount
Groups(I2) = GetCell(I2, I)
Next I2
‘ …
For I2 = 1 To GroupsCount ‘ VB не умеет копировать массивы
PrGroups(I2) = Groups(I2)
Next I2
I = I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Sub AddHeader(Ty As Integer, Name As String)
GetCellS(«result», 1, CurRow).Value = Name
CurRow = CurRow + 1
End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount — 1
GetCellS(«result», I2, CurRow).Value = GetCell(I2, I)
Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets(«Result»).Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Уже лучше:

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать (min.us) или (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Если вы частый пользователь MS Excel, вам наверняка приходится ежедневно выполнять однотипные операции. В этом случае макросы Excel помогут записать последовательность действий в виде набора VBA команд. Такой способ отлично подойдет для автоматизации простых задач. Если речь идёт о более сложных задачах, пользователи c навыками программирования могут автоматизировать операции с помощью VBA проектов.

Инструмент «Автоматизация» предлагает принципиально новый подход к автоматизации рутинных задач в Excel:

  • Создание команд в простой таблице Excel вместо объёмных VBA проектов
  • Автоматизация даже сложных и многоэтапных операций
  • Автоматизация операций XLTools: SQL запросы, Экспорт в CSV, Редизайн таблицы, т.д.
  • Создание пользовательских кнопок на панели инструментов
  • Для продвинутых пользователей и разработчиков

Не обязательно быть гуру VBA. Если какие-то ваши бизнес-процессы в Excel отнимают слишком много времени, наша команда XLTools поможет их автоматизировать.

Как автоматизировать операции в Excel без VBA

Зачастую VBA макросы Excel разрастаются до сотен строк кода, очень неудобных в работе. XLTools «Автоматизация» позволяет писать команды в простых и компактных таблицах Excel. Табличное представление более информативно, наглядно и проще для редактирования. Вы также можете добавить собственные кнопки на панель инструментов Excel, привязав их к своим командам автоматизации.

«Автоматизация» – это универсальный инструмент для автоматизации практически любых команд и их последовательностей:

  • Автоматизация SQL запросов к таблицам Excel: SELECT, GROUP BY, JOIN ON, т.д.
  • Автоматическое преобразование сводных таблиц в плоский список
  • Автоматический экспорт таблиц Excel в файл CSV
  • Автоматическое извлечение данных из других книг Excel или CSV файлов
  • Автоматическая фильтрация таблиц, т.д.

Команды автоматизации в таблице Excel создаются по следующему принципу:

XLTools.SQLSelect– в точности напечатайте название команды; поместите в объединённую ячейку.

XLTools.SQLSelect
SQLQuery: Напишите запрос как обычно.
ApplyTableName: Напишите название таблицы результата.
OutputTo: Укажите, куда поместить результат.

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

Мы подготовили пособие с примерами, синтаксисом и построчными комментариями.

Просто напишите команду, используя пособие НажмитеВыполнить команды Готово!

Скачать пособие (xlsx, 246 KB)

Пример: как автоматизировать SQL запрос к таблицам Excel

Рассмотрим пример розничного магазина. Предположим, вам необходимо подготовить отчёт о продажах за квартал. Вы можете воспользоваться надстройкойSQL Запросыи выполнить запрос к исходным данным. Но если вам приходится готовить подобный отчёт регулярно, этот SQL запрос можно автоматизировать.

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

    • Выберете диапазон «Журнал данных прайс-листа и продаж».
    • На вкладке «Главная» нажмитеФорматировать как таблицу Примените стиль таблицы.
    • На вкладке «Конструктор» присвойте таблице имя «Продажи2014».
  2. Добавьте новый лист, напр., «АвтоКоманды», и создайте команду автоматизации SQL запроса.
  3. Выполните команду автоматизации SQL:

    • Выделите диапазон команды автоматизации Нажмите кнопкуВыполнить командына вкладке XLTools.
    • Готово, результат сгенерируется в секунды.

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

    В этом примере SQL запрос извлёк данные о продажах за 3 квартал 2014.

  4. Создайте собственные кнопки на панели инструментов Excel.

    В каждой книге Excel можно создать до 3-x пользовательских кнопок, привязанных к вашим командам автоматизации:

    • НажмитеСоздать кнопкина вкладке XLTools.
    • Присвойте кнопке имя, напр. «Отчёт по кварталам» Укажите диапазон таблицы команды.
    • Нажмите «Сохранить» Ваша кнопка появится на вкладке XLTools.

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

  • Что такое Макрос?
  • Создание макроса – практический пример
  • Выполнение макроса в Excel
  • Заглянем под капот: Как работает макрос?
  • Добавим ещё один шаг к нашей задаче…

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

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

Что такое Макрос?

Макрос в Microsoft Office (да, этот функционал работает одинаково во многих приложениях пакета Microsoft Office) – это программный код на языке программирования Visual Basic for Applications (VBA), сохранённый внутри документа. Чтобы было понятнее, документ Microsoft Office можно сравнить со страницей HTML, тогда макрос – это аналог Javascript. То, что Javascript умеет делать с данными в формате HTML, находящимися на web-странице, очень похоже на то, что макрос может делать с данными в документе Microsoft Office.

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

  • Применять стили и форматирование.
  • Выполнять различные операции с числовыми и текстовыми данными.
  • Использовать внешние источники данных (файлы баз данных, текстовые документы и т.д.)
  • Создавать новый документ.
  • Проделывать все вышеперечисленные действия в любой их комбинации.

Создание макроса – практический пример

Для примера возьмём самый обычный файл CSV. Это простая таблица 10х20, заполненная числами от 0 до 100 с заголовками для столбцов и строк. Наша задача превратить этот набор данных в презентабельно отформатированную таблицу и сформировать итоги в каждой строке.

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

Чтобы создать макрос, откройте View (Вид) > Macros (Макросы) > Record Macro (Запись макроса…)

Дайте своему макросу имя (без пробелов) и нажмите ОК.

Начиная с этого момента, ВСЕ Ваши действия с документом записываются: изменения ячеек, пролистывание таблицы, даже изменение размера окна.

Excel сигнализирует о том, что включен режим записи макроса в двух местах. Во-первых, в меню Macros (Макросы) – вместо строки Record Macro (Запись макроса…) появилась строка Stop Recording (Остановить запись).

Во-вторых, в нижнем левом углу окна Excel. Иконка Стоп (маленький квадратик) указывает на то, что включен режим записи макроса. Нажатие на неё остановит запись. И наоборот, когда режим записи не включен, в этом месте находится иконка для включения записи макроса. Нажатие на неё даст тот же результат, что и включение записи через меню.

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

Далее, введите в ячейки формулы в соответствии с названиями заголовков (даны варианты формул для англоязычной и русифицированной версии Excel, адреса ячеек – всегда латинские буквы и цифры):

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

После выполнения этого действия в каждой строке должны появиться соответствующие итоговые значения.

Далее, мы подведем итоги для всей таблицы, для этого делаем ещё несколько математических действий:

Соответственно:

Теперь, когда с вычислениями закончили, займёмся форматированием. Для начала для всех ячеек зададим одинаковый формат отображения данных. Выделите все ячейки на листе, для этого воспользуйтесь комбинацией клавиш Ctrl+A, либо щелкните по иконке Выделить все, которая находится на пересечении заголовков строк и столбцов. Затем нажмите Comma Style (Формат с разделителями) на вкладке Home (Главная).

Далее, изменим внешний вид заголовков столбцов и строк:

  • Жирное начертание шрифта.
  • Выравнивание по центру.
  • Заливка цветом.

И, наконец, настроим формат итоговых значений.

Вот так это должно выглядеть в итоге:

Если Вас все устраивает, остановите запись макроса.

Поздравляем! Вы только что самостоятельно записали свой первый макрос в Excel.

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

Чтобы очистить все ячейки от данных, щёлкните правой кнопкой мыши по иконке Выделить все, которая находится на пересечении заголовков строк и столбцов, и из контекстного меню выберите пункт Delete (Удалить).

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

Важный момент! Если Вы сохраните файл с расширением XLTX, то макрос в нём работать не будет. Кстати, можно сохранить книгу как шаблон Excel 97-2003, который имеет формат XLT, он тоже поддерживает макросы.

Когда шаблон сохранён, можно спокойно закрыть Excel.

Выполнение макроса в Excel

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

  • Макрос может нанести вред.
  • Ещё раз прочти предыдущий пункт.

VBA-код обладает очень большими возможностями. В частности, он может выполнять операции с файлами за пределами текущего документа. Например, макрос может удалять или изменять любые файлы в папке Мои документы. По этой причине запускайте и разрешайте выполнение макросов только из источников, которым Вы доверяете.

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

Следующим шагом, мы импортируем последний обновлённый набор данных из файла CSV (на основе такого файла мы создавали наш макрос).

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

Когда импорт будет закончен, зайдите в меню Macros (Макросы) на вкладке View (Вид) и выберите команду View Macros (Макросы).

В открывшемся диалоговом окне мы увидим строку с именем нашего макроса FormatData. Выберите его и нажмите Run (Выполнить).

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

Заглянем под капот: Как работает макрос?

Как уже не раз упоминалось, макрос – это программный код на языке программирования Visual Basic for Applications (VBA). Когда Вы включаете режим записи макроса, Excel фактически записывает каждое сделанное Вами действие в виде инструкций на языке VBA. По-простому, Excel пишет программный код вместо Вас.

Чтобы увидеть этот программный код, нужно в меню Macros (Макросы) на вкладке View (Вид) кликнуть View Macros (Макросы) и в открывшемся диалоговом окне нажать Edit (Изменить).

Откроется окно Visual Basic for Applications, в котором мы увидим программный код записанного нами макроса. Да, Вы правильно поняли, здесь этот код можно изменить и даже создать новый макрос. Те действия, которые мы совершали с таблицей в этом уроке, вполне можно записать с помощью автоматической записи макроса в Excel. Но более сложные макросы, с тонко настроенной последовательностью и логикой действий требуют программирования вручную.

Добавим ещё один шаг к нашей задаче…

Представьте, что наш исходный файл с данными data.csv создаётся автоматически каким-то процессом и сохраняется на диске всегда в одном и том же месте. Например, C:\Data\data.csv – путь к файлу с обновляемыми данными. Процесс открытия этого файла и импорта данных из него тоже можно записать в макрос:

  1. Откройте файл шаблона, в котором мы сохранили макрос – FormatData.
  2. Создайте новый макрос с именем LoadData.
  3. В процессе записи макроса LoadData сделайте импорт данных из файла data.csv – как мы это делали в предыдущей части урока.
  4. Когда импорт будет завершён, остановите запись макроса.
  5. Удалите все данные из ячеек.
  6. Сохраните файл, как шаблон Excel с поддержкой макросов (расширение XLTM).

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

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

Оцените качество статьи. Нам важно ваше мнение:

Автоматизация Excel

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *