Макрос для Excel

  1. Предисловие

Возврат к содержанию

Что заставило меня написать эту программу?

Наткнувшись случайно в одном из своих документов на макро вирус, я вдруг обнаружил, что больше половины файлов(около 200) уже заражено, не смотря на стоявший Norton AntiVirus 2000(мне еще повезло, у знакомого на работе этот самый NAV2000 посадил на карантин около 500 документов, при этом восстанавливать с карантина их отказался — сколько человеко\часов пропало зря можно только догадываться). Пошёл к другу и оказалось, что и AVP-шка с ним не справляется. Лень, как говорят, двигатель прогресса — не захотел я все 200 файлов чистить в ручную. Посидел, разобрался немного и написал прогу для конкретного вируса, потом немного дописал кода — вроде универсальная прога получилась. Наловил немного новых вирусов, подкорректировал программу. Данная программа не панацея, но пока она меня не подводила, а в случае, если заражение всё-таки произошло, это легко заметить.

Необходимо ли Вам ставить мою программу?

В принципе Вы можете поставить галочку в меню Сервис-Параметры-Общие-Защита от вирусов и они Вас беспокоить не будут (впрочем, как и полезные макросы). Но если Вам интересно взглянуть на вирус своими глазами или неохота каждый раз в слепую гадать, разрешить работу макросу или нет, я думаю, программой Macros Hunter Вам стоит воспользоваться.

  • Назначение

Возврат к содержанию

Программа Macros Hunter for MS Word предназначена для обнаружения неизвестных макросов в документах MS Word и является фильтром, разрешая работу полезных макросов и удаляя макровирусы. Кроме того, программа позволяет создать библиотеку макросов, как вредных, так и полезных (актуально для тех, кто много пишет на VBA или работает с чужими макросами).

  • Системные требования

Возврат к содержанию

Для работы программы достаточно любого компьютера на котором установлен MS Word 97/2000/XP/2003.

  • Состав

Возврат к содержанию

В состав программы входят следующие файлы:

  • Установка

Возврат к содержанию

  • Удаление

Возврат к содержанию

  • Воcстановление

Возврат к содержанию

Если по каким — либо причинам программа перестала работать, то для её восстановления необходимо сначала произвести удаление программы с помощью файла Install.doc, а затем произвести повторную инсталяцию.

  • Руководство
  1. Панель управления
  2. Окно обнаружения нового макроса
  3. База макросов
  4. Окно Настроек программы
  5. Карантин

Возврат к содержанию

Программа Macros Hunter for MS Word использует средства Visual Basic for Application для обнаружения макросов в документе MS Word. О нормальной работе программы можно судить по окну с бегущей строкой, которое появляется при открытии документа (рис.1), если данное окно не появляется значит программа заражена макровирусом или в программе запрещено выполнение автоматических макросов. Однако не всегда, когда окно с бегущей строкой появляется можно утверждать, что заражения MS Word не произошло, поэтому иногда необходимо для профилактики пользоваться кнопкой Проверка на вирус всех документов или кнопкой Проверка активного шаблона.

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

«Проверка на вирус всех документов» Клавиша позволяет в любое время произвести проверку всех открытых документов (при этом всегда будет происходить полная проверка), а также шаблона Normal.dot и если шаблон был повреждён или заражен, то программа востанавливает его. Целесообразно пользоваться этой функцией, если запрещено выполнение автоматических макросов (см. форму настроек программ рис.5) или, если окно с бегущей строкой (рис.1) перестало появляться.

Возврат к началу раздела

Назначение При обнаружении нового макроса программа выводит на экран содержание макроса (рис.3) и предлагает пользователю определить является ли макрос полезным или это очередной вирус:

«Запомнить нужный макрос» Данную кнопку необходимо нажать, если пользователь определит, что данный макрос является полезным . Далее ввести имя (оно может быть любым). Программа занесёт макрос в базу макросов как полезный макрос, при этом он останется в документе и при следующем запуске документа разрешит выполнить программу заложенную в макрос, сообщение в этом случае не выводится.

  1. Если в документе, который создали Вы появился макрос — 99% это вирус.
  2. Если Ваш знакомый дал Вам документ с полезным макросом, то он Вас об этом предупредит.
  3. Если Ваш знакомый дал Вам документ и в документе оказался макрос, о котором Вас не предупредили — 90% это вирус.
  4. Даже если Вы случайно отметили нужный макрос как макроврус, Вы можете восстановить его, открыв файл backup_hunter.txt (предварительно удалив запись из Базы макросов), расположенный в директории программы Macros Hunter.

Возврат к началу раздела

«Удалить» Кнопка предназначена для удаления учётной записи макроса из Базы макросов, т.е. если макрос, который был сопоставлен с этой записью встретится в дальнейшем, то он будет отмечен как новый макрос.

Возврат к началу раздела

Возврат к началу раздела

Карантин

  1. При нажатии ДА документ будет преобразован в безопасный формат.
  2. При нажатии НЕТ документ будет закрыт и перемещён на карантин.
  3. При нажатии ОТМЕНА документ будет открыт без изменений.

рис.6

Возврат к началу раздела

Особенности

Возврат к содержанию

  • Что такое Макрос?
  • Создание макроса – практический пример
  • Выполнение макроса в 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 языке программирования VBA ( Visual Basic for Application ). Данный язык разработан компанией Microsoft , специально для приложений MS Office . Как писать макросы — это отдельная большая тема, по которой написаны сотни книг и существует множество сайтов, поэтому мы не будем рассматривать это в данной статье. Давайте, все-таки, разберем куда макросы нужно вставлять, чтобы они работали в Excel’е.

Предположим мы имеем готовый макрос для объединения ячеек с текстом (напомним, что стандартно Excel при сочетании ячеек оставляет только текст крайней левой верхней ячейки). Для этого нужно открыть редактор Visual Basic ( Alt + F11 ), правой кнопкой мыши нажать на Microsoft Excel Objects , выбрать Insert — Module:

Копируем туда код нашего макроса:

Нажимаем сохранить и возвращаемся к Excel . Выделяем необходимые ячейки и выбираем в меню Вид — Макросы (Alt + F8) название нашего макроса:

Жмем Выполнить и получаем необходимый нам результат:

Не так уж и сложно…

Хитрости » 1 Май 2011 Дмитрий 103449 просмотров

Предположим, Вы скачали файл с данного сайта с примером макроса, открываете файл, но макросы в нем не работают! Как такое может быть? Неужели автор сайта выложил неработающий пример и не знает об этом? И тем более как может случиться такое, что Вы перенесли со своего ПК на другой ПК файл с рабочими макросами на флешке, запускаете, а он не работает… Почему? Вроде все правильно делаете, да ведь и у Вас работает на ПК. И начинает закрадываться мысль: «А чем же этот ПК и Excel на нем такие особенные?». А ответ может быть прост — перед выполнением макроса не было разрешено выполнение этих самых макросов. Да, в большинстве случаев по умолчанию выполнение макросов в Excel отключено. И их надо включить. Для этого:

  • Excel 2003:
    Сервис-Безопасность-Уровень макросов «Низкий»
  • Excel 2007:
    Кнопка Офис-Параметры Excel(Excel Options) -Центр управления безопасностью(Trust Centr) -Параметры центра управления безопасностью(Trust Centr Settings) -Параметры макросов(Macro Settings) -Разрешить все макросы(Enable All Macros)
  • Excel 2010-2016:
    Файл(File)-Параметры(Options) -Центр управления безопасностью(Trust Centr) -Параметры центра управления безопасностью(Trust Centr Settings) -Параметры макросов(Macro Settings) -Разрешить все макросы(Enable All Macros)
  • После изменения параметров безопасности макросов необходимо перезапустить приложение Excel: закрыть его полностью и открыть заново. Только после этого изменения вступят в силу.

Если макросы уже включены, но некоторые макросы отказываются работать (как правило те, которые записаны в модулях листов и книг и запускаются при наступлении определенного события — Worksheet_SelectionChange (выделение ячеек), Worksheet_Change (изменение значений ячеек) и т.п.), то скорее всего когда-то вы выполнили какой-нибудь макрос и он отключил отслеживание событий. Тогда надо в любую активную книгу добавить модуль(переходим в редактор VBA(Alt+F11) -Insert -Module), вставить в него приведенный ниже код и запустить:

Sub Reset_Events() Application.EnableEvents = True End Sub

чтобы запустить(выполнить) данный макрос макрос необходимо установить курсор в любое место между Sub и End Sub и нажать клавишу F5.

Так же см.:
Управление безопасностью макросов
Как запустить файл с включенными макросами?

Статья помогла? Поделись ссылкой с друзьями! Видеоуроки

Поиск по меткам

Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки Надстройки Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx

Обычно для отладки макроса его выполняют в пошаговом режиме. Для включения этого режима необходимо нажать кнопку По шагам (Single Step) на панели инструментов в окне Конструктора макросов или выбрать команду меню Запуск, По шагам (Run, Single Step). Тогда перед выполнением каждой макрокоманды будет появляться диалоговое окно Пошаговое исполнение макроса (Macro Single Step) (рис. 11.14).

В этом окне отображаются имя макроса, имя исполняемой макрокоманды, условие ее исполнения и аргументы. При этом в полях Условие (Condition) и Аргументы (Arguments) видны значения условного выражения и аргументов макрокоманды. Если в строке макрокоманды условие не указано, в поле Условие (Condition) всегда будет показываться значение Истина (True). Кнопки справа от полей в этом окне позволяют выполнить очередную макрокоманду, прервать выполнение макроса (например, если видно, что аргументы вычислены неправильно) и продолжить выполнение в обычном режиме, т. е. не по шагам.

Рис. 11.14. Диалоговое окно Пошаговое исполнение макроса

Если в процессе выполнения макроса возникла ошибка, появляется диалоговое окно Ошибка выполнения макроса (Action Failed), аналогичное окну Пошаговое исполнение макроса (Macro Single Step), но без возможности продолжить процесс (кнопки Шаг (Step) и Продолжить (Continue) недоступны). Можно только прервать выполнение макроса, нажав кнопку Прервать (Halt). В окне отображается макрокоманда, содержащая ошибку.

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

  • большинство синтаксических ошибок проверяется при вводе и система просто не даст ввести неправильное название макрокоманды или условное выражение (правда, она не защитит от ввода неправильного имени объекта, например несуществующей формы или элемента управления в форме);
  • макросы, как правило, достаточно просты и не содержат длинных последовательностей макрокоманд, в противном случае лучше написать процедуру на VBA, т. к. язык VBA предоставляет больше возможностей и имеет существенно лучшие средства отладки.

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

Совет

Прежде чем использовать ссылки на форму или элемент управления, рекомендуется выполнять проверку, открыта ли форма, с помощью функции isLoaded(). К сожалению, эта функция не является стандартной функцией Access, а обычно включается в модуль «Служебные функции» (Utility Function) базы данных «Борей». Вы можете скопировать ее оттуда в свою базу данных.

Стандартным приемом отладки как процедур, так и макросов, является вывод на экран специальных сообщений, говорящих о прохождении определенных этапов процесса. В макросах это осуществляется путем вставки дополнительных макрокоманд ВыводСообщения (MsgBox) для отображения таких сообщений. Причем в сообщении можно вывести значения свойств элементов управления, например: «Цена товара = » & Forms!Товары!Цена

Можно легко отключить вывод на экран отладочных сообщений, для чего введите в столбец «Условия» (Condition) напротив соответствующих макрокоманд значение Ложь.

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

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

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