Как: использование macro recorder для создания простых макросов в excel 2003 — 2021

Алан-э-Дейл       04.09.2022 г.

Макрос Excel: пример 4

В этом примере процедура Sub считывает значения из столбца A рабочего листа Лист2 и выполняет с ними арифметические операции. Результаты заносятся в ячейки столбца A на активном рабочем листе. В этом макросе продемонстрировано использование объектов Excel. В частности, производится обращение процедурой Sub к объекту Columns, и показано, как доступ к этому объекту осуществляется через объект Worksheet. Показано так же, что при обращении к ячейке или диапазону ячеек на активном листе, имя этого листа при записи ссылки указывать не обязательно.

'Процедура Sub при помощи цикла считывает значения в столбце A рабочего листа Лист2,
'выполняет с каждым значением арифметические операции и записывает результат в
'столбец A активного рабочего листа (Лист1)

Sub Transfer_ColA()

   Dim i As Integer
   Dim Col As Range
   Dim dVal As Double

   'Присваиваем переменной Col столбец A рабочего листа Лист 2

   Set Col = Sheets("Лист2").Columns("A")
   i = 1

   'При помощи цикла считываем значения ячеек столбца Col до тех пор,
   'пока не встретится пустая ячейка

   Do Until IsEmpty(Col.Cells(i))

      'Выполняем арифметические операции над значением текущей ячейки

      dVal = Col.Cells(i).Value * 3 - 1

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

      Cells(i, 1) = dVal
      i = i + 1

   Loop

End Sub

Что такое макрос

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

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

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

Вариант 1: Автоматическая запись макросов

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

Подробнее: Включение и отключение макросов в Microsoft Excel

Когда все готово, приступаем к записи.

  1. Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».

Открывается окно настройки записи макроса. Тут можно указать любое имя для него, если установленное по умолчанию вас не устраивает. Главное, чтобы имя это начиналось с буквы, а не с цифры, а также в названии не должно быть пробелов. Мы оставили название по умолчанию – «Макрос1».
Тут же при желании можно установить сочетание клавиш, при нажатии на которые макрос будет запускаться. Первой клавишей обязательно должна быть Ctrl, а вторую пользователь устанавливает самостоятельно. Мы в качестве примера установили клавишу М.
Далее следует определить, где будет храниться макрос. По умолчанию он расположен в этой же книге (файле), но при желании можно установить хранение в новой книге или в отдельной книге макросов. Мы оставим значение по умолчанию.
В самом нижнем поле можно оставить любое подходящее по контексту описание макроса, но это делать не обязательно. Когда все настройки выполнены, жмем на кнопку «OK».

После этого все ваши действия в данной книге (файле) Excel будут записываться в макрос до тех пор, пока вы сами не остановите запись.
Для примера запишем простейшее арифметическое действие: сложение содержимого трех ячеек (=C4+C5+C6).

Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.

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

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

  1. Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.

После этого открывается окно со списком записанных макросов. Ищем макрос, который мы записали, выделяем его и кликаем на кнопку «Выполнить».

Можно поступить еще проще и не вызывать даже окно выбора макросов, так как на первом этапе мы задали сочетание клавиш для быстрого вызова макроса. В нашем случае это Ctrl + М. Жмем данную комбинацию на клавиатуре, после чего он запускается.
Как видим, он выполнил в точности все те действия, которые были записаны ранее.

Редактирование макроса

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

  1. Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».

Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.

Запись каждого макроса начинается с команды , а заканчивается командой . Сразу же после указывается имя макроса. Оператор указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4». Оператор используется для записи действий в формулах и других расчетов.
Попытаемся немного изменить макрос, дописав выражение:

Выражение заменим на .

Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду . Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду .
Добавим также команду в начало кода, а в его конец дописываем . Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.

Стиль «умной» таблицы

Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:

1

ActiveSheet.ListObjects(“МояТаблица1”).TableStyle=“TableStyleMedium15”

Свойство TableStyle может принимать следующие значения:

  • TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
  • TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
  • TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).

Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.

Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:

1

ActiveSheet.ListObjects(“МояТаблица1”).TableStyle=“”

Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».

Где можно научиться работать с макросами

Есть несколько способов научиться созданию более сложных макросов. Они должны отличаться логикой и четко настроенной последовательностью действий. Создаются такие макросы только путем написания кода VBA вручную. Для создания сложных макросов вам потребуется затратить некоторое время на изучения тонкостей языка программирования Visual Basik.

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

Как включить макросы в Excel

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

В окне «Параметры Excel» перейдите на вкладку «Настройка ленты», теперь в правой части окна поставьте галочку напротив пункта «Разработчик» и нажмите «ОК».

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

Теперь разрешим использование всех макросов. Снова открываем «Файл» – «Параметры». Переходим на вкладку «Центр управления безопасностью», и в правой части окна кликаем по кнопочке «Параметры центра управления безопасностью».

Кликаем по вкладке «Параметры макросов», выделяем маркером пункт «Включить все макросы» и жмем «ОК». Теперь перезапустите Excel: закройте программу и запустите ее снова.

Вариант 2: Написание кода макроса с нуля

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

  1. Чтобы приступить к этому, нужно нажать на кнопку «Visual Basic», которая расположена в самом начале ленты разработчика.

Откроется окно редактора VBE, которое уже быдло продемонстрировано в предыдущем варианте.

Программист пишет там код макроса вручную.

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

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

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

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

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

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

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

Запись макроса макрорекордером

Чтобы записать макрос в Excel нужно в нижней панели нажать на кнопку «Запись макроса» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Запись макроса»:

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

Настраиваем поля записываемого макроса (можно оставить поля пустыми):

Выбор имени макроса и сочетания клавиш

  1. Имя макроса — произвольное имя на русском или английском языке;
  2. Сочетание клавиш — комбинация клавиш, которой в дальнейшем будет запускаться макрос;
  3. Сохранить в — книга в которой будет сохраняться макрос.

Остановить запись макроса можно двумя способами: в нижней панели нажать на кнопку «Остановить запись» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Остановить запись»:

Конец записи макроса

Как включить макросы в Эксель

Откроется окно, остановитесь на «Параметры».

В левой части запустившегося меню, отыщите «Безопасность».

Справа кликните по «Параметры центра управления».

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

Обязательно подтвердите действия, выбрав в нижней части окна «Ок».

Прежде чем приступить к активации, следует запомнить, что:

  • Макрорекордер запишет все действия пользователя,
    в том числе и ошибки.
  • Записываться будут только те действия, которые
    выполняются в Microsoft Excel.
    При переключении на другую программу запись остановится.
  • Макрорекордер способен записать действия,
    выполняемые серфером вручную.

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

Изменение макроса

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

Отобразите окно с макросами, выберите любой из имеющихся и нажмите кнопку «Изменить». Программа Вас перенаправит в редактор Visual Basic в модуль с кодом выбранного макроса. Если Вы точно следовали статье, то на экране должен быть приблизительно следующий скрипт (зеленый текст, расположенный после апострофа, является комментарием и не выполняется программой):


Sub Макрос1()
‘ Каждая процедура начинается с оператора Sub, после которого следует имя макроса, заканчивающееся скобками
‘ Можно поменять название, заменив первую строчку на Sub МояПроцедура()

‘ Здесь начинается код, повторяющий записанные действия пользователя
‘ Обратите внимание, что во многих строках присутствует объект Selection. Это значит, что
‘ действия производятся с выбранным на данный момент диапазоном

‘ Начало участка кода, отвечающего за оформление границ
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
‘ Конец участка кода, отвечающего за оформление границ
‘ Начало кода, отвечающего за заливку
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
‘ Конец кода, отвечающего за заливку
‘ Начало кода, оформляющего шрифт, размер и начертание текста
With Selection.Font
.Name = «Times New Roman»
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Italic = True
‘ Конец кода, оформляющего шрифт, размер и начертание текста
‘ Последняя строка сообщает об окончании процедуры
End Sub. Не будем ничего менять, а только дополним его двумя строками, которые будут выводить в строке статуса нужную информацию

Это позволит нам определить, что процедура завершила свою работу

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

Дополните Ваш код в соответствии с нижеприведенным образцом:

Sub Макрос1()
    Application.StatusBar = "Ждите. Меняем формат"
    
' здесь должен находиться код, записанный макросом

    Application.StatusBar = "Стиль изменен"
End Sub

Запустите макрос и убедитесь, что внизу страницы появилось наше сообщение:

Примечание:
Сохраняя книгу с макросами, необходимо выбрать расширение файла .xlsm, иначе все процедуры сотрутся.

  • < Назад
  • Вперёд >

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

Запись макроса в Excel

Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например “Excel”.

Вот шаги для записи такого макроса:

  1. Перейдите на вкладку “Разработчик”.
  2. В группе “Код” нажмите кнопку “Запись макроса”. Откроется одноименное диалоговое окно.
  3. В диалоговом окне “Запись макроса” введите имя для своего макроса, например “ВводТекста”. Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов – например, “Ввод_текста”.
  4. Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
  5. В поле “Сохранить в” убедитесь, что выбрана опция “Эта книга”. Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
  6. Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
  7. Нажмите “ОК”. Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку “Остановить запись” на вкладке “Разработчик”, которая указывает, что выполняется запить макроса.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или вы можете использовать свое имя).
  10. Нажмите клавишу Enter. Вы попадете на ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

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

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

  1. Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
  2. Выберите любую ячейку – кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
  3. Перейдите на вкладку “Разработчик”.
  4. В группе “Код” нажмите кнопку “Макросы”.
  5. В диалоговом окне “Макрос” щелкните макрос “ВводТекста”.
  6. Нажмите кнопку “Выполнить”.

Вы увидите, что как только вы нажмете кнопку “Выполнить”, текст “Excel” будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.

Как создать макрос в Excel 2016 для Mac

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

  1. Идти к превосходить и выберите предпочтения…
  2. Выбрать Лента и панель инструментов.
  3. Выберите разработчик установите флажок «Основные вкладки» в разделе «Настроить категорию ленты».
  4. Нажмите Сохранить.

Когда вы будете готовы создать макрос, запустите Excel и откройте рабочий лист, в котором вы хотите его использовать.

  1. Перейти к разработчик Вкладка.
  2. Нажмите на Запись макроса в группе Code.
  3. Введите имя макроса в поле «Имя макроса».
  4. Введите любую строчную или прописную букву, которую вы хотите использовать в поле быстрого доступа.
  5. Выбрать Эта рабочая тетрадь в раскрывающемся списке «Сохранить макрос в магазине».
  6. Нажмите Хорошо.
  7. Выполните все форматирование и команды, которые вы хотите включить.
  8. Нажмите Остановить запись когда вы закончите.
  9. Перейти к файл и выберите Сохранить как или нажмите ⇧⌘S (Shift-Command-S). Откроется диалоговое окно «Сохранить как».
  10. Введите имя файла для книги.
  11. Выбрать Excel Macro-Enabled Workbook в раскрывающемся списке «Сохранить как» и нажмите Сохранить.

Создание макросов в программе Microsoft Excel

​(Tools – Macro -​ ячейках, пересчет листа,​ процедура), записанная на​ ‘Выполняем арифметические операции​ iFib iFib =​После этого, открывается знакомое​ будут записываться в​ кнопкой мыши объект,​ не должно содержаться​Назначение макроса объекту, фигуре​ или прописную букву.​При записи макроса все​

​ галочкой опцию «Разработчик»​ старый и введите​

Способы записи макросов

​ комбинациях клавиш клавишу​ тогда сначала прочитайте​

  • ​Команды (Commands)​
  • ​ Record New Macro)​

​ копирование или удаление​ языке программирования Visual​ над значением текущей​ iFib_Next End If​ нам окно редактора​ макрос до тех​ рисунка, фигуры или​ пробелов; в качестве​ или графическому элементу​ Рекомендуется использовать сочетания​ необходимые действия записываются​ и нажмите на​ новый текст «Мой​

Автоматическая запись макросов

​ VBE.​ пор, пока вы​ элемент, к которому​ разделителей слов следует​

​На листе щелкните правой​ клавиш с​ в виде кода​ кнопку ОК.​ макрос».​ вы придадите фокус​

​ макрос в Excel​Макросы​ новее – нажать​Обычный макрос, введенный в​ (VBA). Мы можем​ Col.Cells(i).Value * 3​ Фибоначчи в столбце​Программист пишет там код​ сами не остановите​ нужно назначить существующий​ использовать знаки подчеркивания.​ кнопкой мыши объект,​CTRL​ Visual Basic для​

​​После создания кнопки можно​ клавиатуры для поля​ на языке программирования​легко найти веселый​ кнопку​ стандартный модуль выглядит​ запускать макрос сколько​ – 1 ‘Следующая​ A активного рабочего​ макроса вручную.​ запись.​

​ макрос и выберите​ Если используется имя​ рисунка, фигуры или​+​ приложений (VBA). Такими​Макросы позволяют автоматизировать процессы​ ее настроить, изменив​ ввода «Сочетание клавиш:​ VBA.​ желтый “колобок” -​Запись макроса (Record macro)​ примерно так:​

​ угодно раз, заставляя​ команда записывает полученный​ листа ‘в строке​Как видим, макросы в​Для примера, запишем простейшее​ команду​ макроса, являющееся ссылкой​

​ элемент, к которому​SHIFT​ действиями может быть​

​ работы с документами​ ее размеры и​ CTRL+» и попытаетесь​В данной статье для​Настраиваемую кнопку​на вкладке​Давайте разберем приведенный выше​ Excel выполнять последовательность​

​ результат в столбец​ с индексом i​ Microsoft Excel могут​ арифметическое действие: сложение​

​Назначить макрос​ на ячейку, может​ нужно назначить существующий​, так как они​ ввод текста или​ и не только…​

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

​ положение на листе.​ ввести большую букву​ Вас буде приведет​(Custom button)​Разработчик (Developer)​ в качестве примера​ любых нужных нам​ A активного рабочего​

​ Cells(i, 1).Value =​ значительно ускорить выполнение​ содержимого трёх ячеек​.​ появиться сообщение об​ макрос и выберите​ будут заменять собой​

​ чисел, выбор ячеек​ Они могут практически​ Для этого снова​ для комбинации, естественно​ пошаговый пример с​:​Затем необходимо настроить параметры​ макрос​ действий, которые нам​ листа ‘Имя листа​ iFib ‘Вычисляем следующее​ рутинных и однообразных​

​ (=C4+C5+C6).​В поле​ ошибке, указывающее на​ команду​

Чем могут быть опасны макросы в Excel?

Программисты не рекомендуют использование написанных другими людьми макросов, так как они могут быть опасными для ваших данных и ПК в целом. «Макровирусы» являются очень распространенным видом хакерства. Они способны:

• повредить файлы на ПК; • похитить конфиденциальные данные.

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

Еще один способ работы вредоносного макроса – посредничество для внедрения угроз в систему. В этом случае он является своеобразными воротами для внедрения и генерирования троянского ПО. Им уже будет управлять не видоизменённый макрос, а сама операционная система, а следовательно, угроза становится более масштабной. Не всегда получается вылечить такие вирусы, иногда приходится полностью менять Windows OC или жесткий диск ПК (в зависимости от задач, которые ставил хакер при написании кода).

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

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

Альтернативный вариант открытия файла

 Set objExcel = New Excel.Application Set wb = objExcel.Workbooks wb.Open fname, local:=True Set ws = wb.Item(1).ActiveSheet 

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks – обновлять или нет внешние ссылки при открытии файла;ReadOnly – открытие в режиме только для чтения;Format – используемый при открытии разделитель (1 – символ tab, 2 – запятые, 3 – пробелы, 4 – точка с запятой, 5 – без разделителя, 6 – пользовательский разделитель, заданный в Delimiter);Delimiter – пользовательский разделитель (в случае, если Format = 6);Origin – тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);Local – использование в Excel языка такого же, как в открываемом файле.

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

 ws.Cells(1, 1).Value = "Test" ws.Cells(1, 1).Font.Size = 18 ' Поменять размер шрифта ws.Cells(1, 1).HorizontalAlignment = xlCenter ' 

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст “Excel”, то каждый раз – независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст “Excel” в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет “двигаться” относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст “Excel” и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Относительные ссылки”. Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку “Запись макроса”.
  5. В диалоговом окне “Запись макроса” введите имя для своего макроса. Например, имя “ОтносительныеСсылки”.
  6. В опции “Сохранить в” выберите “Эта книга”.
  7. Нажмите “ОК”.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Макросы”.
  4. В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
  5. Нажмите кнопку “Выполнить”.

Как вы заметите, макрос записал текст “Excel” не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel – ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:

 Sub ОтносительныеСсылки() ' ' ОтносительныеСсылки Макрос ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален

Без него код будет работать отлично.

Гость форума
От: admin

Эта тема закрыта для публикации ответов.