Включение и отключение макросов в файлах Office
Макрос представляет собой набор команд, с помощью которых можно автоматизировать выполнение повторяющейся задачи. В этой статье описаны риски, связанные с использованием макросов, и приведены инструкции по включению и отключению макросов в центре управления безопасностью.
Предупреждение: Никогда не в enable macros in an Office file unless you’re sure what those macros do. Неожиданные макросы могут представлять серьезную угрозу безопасности. Для этого не нужно, чтобы макрос мог видеть или редактировать файл. только в том случае, если вам нужны функции, предоставляемые макросом.
Сведения о создании макросов см. в статье Краткое руководство: создание макроса.
Если вы ищете сведения об использовании макроса на компьютере с Windows S, см. "Блокировать подозрительные макросы" в Office в Windows 10 S.
Макросы служат для автоматизации часто выполняемых задач, что позволяет сэкономить время за счет сокращения объема работы с клавиатурой и мышью. Многие из них созданы с использованием языка Visual Basic для приложений (VBA). Однако некоторые макросы представляют угрозу безопасности. Макрос часто используется злоумышленниками для тихой установки вредоносных программ, например вирусов, на компьютере или в сети организации.
Включение макросов при появлении панели сообщений
При открытии файла, содержащего макросы, появляется желтая панель сообщений со значком щита и кнопкой Включить содержимое. Если известно, что макрос поступил из надежного источника, воспользуйтесь приведенными ниже инструкциями.
В области Панель сообщений нажмите кнопку Включить содержимое.
Файл откроется и будет надежным документом.
На рисунке ниже показана панель сообщений, когда в файле есть макросы.
Включить макрос только для текущего сеанса
Выполнив приведенные ниже инструкции, можно включить макросы на то время, пока открыт файл. Если закрыть файл и открыть его снова, предупреждение появится опять.
Откройте вкладку Файл.
В области Предупреждение системы безопасности нажмите кнопку Включить содержимое.
Выберите элемент Дополнительные параметры .
В диалоговом окне Параметры безопасности Microsoft Office выберите команду Включить содержимое для этого сеанса для каждого макроса.
Нажмите кнопку ОК.
Изменение параметров макросов в центре управления безопасностью
Параметры макросов доступны в центре управления безопасностью. Однако администратор организации может изменить настройки по умолчанию, чтобы запретить изменение каких-либо параметров.
Важно: При изменении параметров макроса в центре управления доверием они изменяются только для используемого в данный момент программы Office. Параметры макроса не меняются во всех программах Office.
Откройте вкладку Файл.
Затем выберите пункты Центр управления безопасностью и Параметры центра управления безопасностью.
В центре управления безопасностью щелкните элемент Параметры макросов.
Выберите нужные вам решения и нажмите кнопку "ОК".
Примечание: Параметры в Excel немного отличаются, поэтому мы будем звонить на них по мере их вызова.
Отключить все макросы без уведомления. Этот параметр отключает макросы и связанные с ними оповещения безопасности.
В Excel этот параметр отключение макроса VBA без уведомления и только для макроса VBA.
Отключить все макросы с уведомлением. Этот параметр отключает макросы без отключения оповещений системы безопасности, которые будут появляться при необходимости. Так вы можете включать макросы, когда это требуется.
В Excel этот параметр является отключением макроса VBA с уведомлением и применяется только к макросам VBA.
Отключить все макросы кроме макросов с цифровой подписью Макрос отключается, а при этом отображаются оповещения системы безопасности. Однако если макрос подписан надежным издателем, он просто запускается. Если макрос подписан издателем, которому вы еще не доверяете, вы можете включить его и сделать издателя надежным.
В Excel этот параметр отключен, кроме макроса с цифровой подписью, и применяется только к макросам VBA.
Включить все макросы (не рекомендуется, советуем запускать опасное код). Все макрос будет запускаться без подтверждения. Компьютер становится уязвимым для потенциально опасных программ.
В Excel этот параметр относится только к макросам VBA (не рекомендуется, советуем запускать опасной код), и он применяется только к макросам VBA.
Excel также есть контрольныйExcel включить макрос Excel 4.0при включенном макросах VBA. Если этот параметр установить, все параметры макроса VBA будут также применяться к макросам Excel 4.0 (XLM).
Если этот снимок не был выбран, макрос XLM отключется без уведомления.
Доверять доступ к объектной модели проектов VBA Отопустить или разрешить программный доступ к объектной модели Visual Basic для приложений (VBA) из клиента автоматизации. Этот параметр безопасности для кода, написанного для автоматизации программ Office и работы со средой VBA и объектной моделью. Этот параметр настраивается как для каждого пользователя, так и для каждого приложения и по умолчанию не позволяет несанкционированно получать доступ, препятствуя построению потенциально опасных кодов самопроизводения. Чтобы клиенты автоматизации получили доступ к объектной модели VBA, пользователь, работающий с кодом, должен предоставить доступ. Чтобы включить доступ, выберите его.
Примечание: В Microsoft Publisher и Microsoft Access параметр Доверять доступ к объектной модели проектов VBA отсутствует.
Работа с макросами Excel для чайников
Многие люди боятся использовать макросы в Excel, потому что считают их довольно сложными для понимания. Все потому, что они связаны с программированием. Но на практике все оказывается значительно проще, чем может показаться на первый взгляд. В программировании важно научиться строить алгоритмы. И если человек умеет кодить хотя бы на одном языке, ему значительно проще усвоить все остальные.
Мы приведем некоторые примеры макросов Excel, которые станут верными помощниками в выполнении наиболее частых задач.
Понятие макроса
Термин «Макрос» слышало множество людей. Нередко при запуске таблицы появляется предупреждение: “Этот документ использует макросы, способные навредить данному компьютеру, поэтому они отключены с целью защиты от вредоносных действий”.
Макрос – действенный способ автоматизировать самые частые действия, которые нужно выполнять в электронных таблицах. Макросы – это разновидность программирования. Разработка этих подпрограмм осуществляется с помощью языка VBA. Впрочем, некоторые виды макросов не требуют навыков программирования. Ведь существует еще такое понятие, как макрорекордер. Достаточно его включить и совершить некоторые действия, как далее они будут повторяться по нажатию одной кнопки.
Макросы могут быть реально опасными. Поскольку при их написании используется язык программирования, с его помощью можно создать настоящий вирус, который способен повредить информацию, а также собирать данные для злоумышленников (особенно опасно, если в таблице есть банковские данные, пароли и так далее).
Также макрос может запустить реальную троянскую программу на компьютере. Поэтому, чтобы не допустить вредоносных действий со стороны стороннего макроса, не стоит запускать макросы из сторонних источников, которым не доверяют.
Значительно проще объяснить, зачем нужны макросы, на реальном примере. Например, необходимо каждый день удалять из электронной таблицы несколько столбцов, а потом добавлять новые строки. Это невероятно утомительное занятие, отнимающее много времени. Если же воспользоваться макросами, есть реальная возможность значительно его сэкономить.
Макросы можно запускать по нажатию определенной комбинации клавиш. Например, если нажать Ctrl+J, можно запустить подпрограмму.
Интересный факт: известная программа бухгалтерского учета 1C изначально очень напоминала Excel, но потом ее функционал расширился до текущего.
Если же нужно давать компьютеру сложные инструкции, можно воспользоваться редактором Visual Basic, примеры кода в котором мы и рассмотрим немного позже.
Когда какой тип записи макросов использовать?
Если необходимо автоматизировать простейшие действия, достаточно использовать встроенный инструмент для записи макросов. То есть, если не приходится прописывать никаких условий, переменных и других подобных вещей. Просто обычная последовательность действий.
Если же необходимо программировать сложные действия, то тогда придется пользоваться встроенной средой VBA. Например, если необходимо записать в массив все элементы какого-то диапазона значений, определить его длительность, и при условии, что количество элементов массива не превышает определенного числа, выдавать какое-то сообщение. Здесь стандартного инструмента для записи макросов окажется недостаточно, необходимо изучать язык программирования и записывать команды в специальной среде. А интерпретатор в дальнейшем будет выполнять написанный код.
Пример использования макросов №1
Сперва этот пример кода использовался для демонстрации комментариев кода, написанного на VBA. Но поскольку он включает и иные возможности языка, он может применяться для демонстрации следующих функций:
- Объявление переменных.
- Указание ссылок на ячейки Excel.
- Применение цикла типа For.
- Применение условного оператора.
- Отображение оповещения.
‘ Подпрограмма для поиска ячеек с адресами A1-A100 текущего активного листа
‘ и поиска ячеек, в которых содержится требуемая строка
Sub Find_String(sFindText As String)
Dim i As Integer ‘ Целочисленная переменная, которая используется в цикле типа «For»
Dim iRowNumber As Integer ‘ Целочисленная переменная, предназначенная для сохранения результата
iRowNumber = 0
‘ Цикл через ячейки A1-A100 до тех пор, пока не будет найдена строка ‘sFindText’
For i = 1 To 100
If Cells(i, 1).Value = sFindText Then
‘ Совпадение обнаружено для заданной строки
‘ Сохранение текущего номера строки и выход из цикла
iRowNumber = i
‘ Всплывающее сообщение, информирующее пользователя о найденной строке и ее номере
If iRowNumber = 0 Then
MsgBox “String ” & sFindText & ” not found”
MsgBox “String ” & sFindText & ” found in cell A” & iRowNumber
Пример 2
Эта процедура перечисляет все значения числовой последовательности Фибоначчи, вплоть до 1000. В этом примере приводятся следующие возможности макросов Excel:
- Объявление переменных.
- Цикл Do While.
- Ссылки на ячейки текущего листа Excel.
- Условный оператор.
‘ Подпрограмма для перечисления всех значений последовательности Fibonacci для всех значений ниже тысячи
Sub Fibonacci()
Dim i As Integer ‘ счетчик для позиции в серии значений
Dim iFib As Integer ‘ сохраняет текущее значение в серии
Dim iFib_Next As Integer ‘ сохраняет следующее значение в серии
Dim iStep As Integer ‘ хранит размер следующего шага
‘ Инициализация переменных variables i и iFib_Next
iFib_Next = 0
‘ Цикл Do While, который исполняется до тех пор, пока номер
‘ числа в последовательности Фибоначчи меньше 1000.
Do While iFib_Next Следующий пример подпрограммы читает значения с ячейки в колонке A активного листа, пока не найдет пустую ячейку. Вся полученная информация сохраняется в массиве. Это простой пример макросов в электронных таблицах, который показывает:
- Как объявлять переменные.
- Работу динамического массива.
- Цикл Do Until.
- Ссылки на ячейки в текущем листе Excel.
- Встроенную функцию Ubound, которая предназначена для определения размера массива.
‘ Подпрограмма, которая хранит значения колонки А текущего листа
Sub GetCellValues()
Dim iRow As Integer ‘ сохраняется текущий номер строки
Dim dCellValues() As Double ‘ массив, в котором хранятся значения ячеек
ReDim dCellValues(1 To 10)
‘ Цикл Do Until, который извлекает значение каждой ячейки в столбце А
‘ активного листа до тех пор, пока ячейка не окажется пустой
Do Until IsEmpty(Cells(iRow, 1))
‘ Проверка, достаточно ли большой массив dCellValues
‘ Если нет, используется ReDim, чтобы увеличить размер массива на 10 элементов.
If UBound(dCellValues) Следующая процедура «Sub» читает содержимое ячеек из колонки А другого листа, имеющего название «Sheet2» и с этими значениями осуществляет арифметические операции. Результат вычислений пишется в колонке А текущего листа.
Этот пример показывает:
- Как объявлять переменные.
- Объекты Excel.
- Цикл Do Until.
- Доступ к листам электронных таблиц и диапазонам ячеек с текущей книги.
‘ Подпрограмма, запускающая цикл через значения в колонке А текущего листа
‘ “Sheet2”, perform arithmetic operations on each value, and write the
‘ result into Column A of the current Active Worksheet (“Sheet1”)
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
‘ Установить переменную Col в колонку А листа 2
Set Col = Sheets(“Sheet2”).Columns(“A”)
‘ Прохождение цикла через каждую ячейку колонки ‘Col’ до тех пор, пока
‘ не будет обнаружена пустая ячейка
Do Until IsEmpty(Col.Cells(i))
‘ Применение арифметических операций к значению текущей ячейки
dVal = Col.Cells(i).Value * 3 – 1
‘ Команда ниже копирует результат в колонку А
‘ текущего активного листа – без уточнения названия активного листа
Cells(i, 1) = dVal
Пример 5
Этот пример макроса приводит пример кода VBA, связанного с событием. Каждый раз, когда человек выделяет ячейку или диапазон значений, связанное с макросом событие активируется.
‘ Код для отображения диалогового окна ячейки B1 текущего листа в случае, если она выбрана
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
‘ Проверка, выбрана ли ячейка B1
If Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then
‘ При выборе ячейки B1 показать диалоговое окно
MsgBox “You have selected cell B1”
Пример 6
Следующая подпрограмма демонстрирует, как обрабатывать ошибки с помощью операторов OnError и Resume. Также в этом коде описывается, как открывать и читать данные с файла.
‘ Подпрограмма, для для установки определенных значений
‘ в ячейках A1 и B1 документа “Data.xls” на диске C:\
Sub Set_Values(Val1 As Double, Val2 As Double)
Dim DataWorkbook As Workbook
On Error GoTo ErrorHandling
‘ Открытие документа с данными
Set DataWorkbook = Workbooks.Open(“C:\Documents and Settings\Data”)
‘ Выбрать переменные Val1 and Val2 с данных в книге Excel
Val1 = Sheets(“Sheet1”).Cells(1, 1)
Val2 = Sheets(“Sheet1”).Cells(1, 2)
DataWorkbook.Close
ErrorHandling:
‘ Если файл не найден, предложить пользователю найти правильную директорию
‘ после чего продолжить выполнение подпрограммы
MsgBox “Data Workbook not found;” & _
“Please add the workbook to C:\Documents and Settings and click OK”
После детального ознакомления с этими примерами будет значительно легче применять свои навыки на практике.
Рекомендации по использованию макросов
Есть несколько рекомендаций, позволяющих значительно увеличить эффективность использования макросов в электронных таблицах:
- Перед тем, как записывать макрос с помощью рекордера, следует заранее продумать все свои действия, поскольку автоматизироваться будут все действия (в том числе, и ошибочные).
- Не стоит торопиться, поскольку паузы при записи макросов не учитываются. Вполне можно начать продумывать по ходу какие-то действия. А все записанные операции будут обработаны в один момент.
- Обязательно необходимо научиться использовать режим отладки макроса. Если возникают какие-то ошибки, он поможет обнаружить, в чем причина неполадки. На первых порах без ошибок не обойтись, потому что в реальной программе будет все не так идеально, как может показаться на первый взгляд.
- Перед использованием макросов, сделанных другими людьми, нужно настроить антивирусную программу на их обнаружение. Как правило, эта опция установлена по умолчанию.
- Если загружаются документы из сомнительных источников, следует выбрать опцию «Отключить макросы» при их открытии. И не рекомендуется менять настройки, которые выставлены по умолчанию в настройках безопасности Excel.
Выводы
Таким образом, макросы – это эффективный инструмент автоматизации рабочих процессов в Excel. Он позволяет автоматизировать даже самые сложные последовательности действий. Если необходимо сделать простую программку, то достаточно воспользоваться встроенной функцией для записи макросов. Для более сложных необходимо освоить язык VBA, который является простым для изучения и очень гибким.
Если используются сторонние макросы, обязательно нужно побеспокоиться о безопасности их использования.