Excel как применить макрос ко всем файлам

Для чего нужны макросы в excel и как их сделать: инструкция со скриншотами

среда, октября 12, 2011

Word 2010 — Макрос не найден. Возможно он отключен по соображениям безопасности

Запускаю свежеустановленный MS Office 2010 — и при запуске три раза появляется сообщение «Макрос не найден. Возможно он отключен по соображениям безопасности».

У меня Windows 7 64bit и такой же, 64-bit-ный, Office.

На компьютере установлен Lingvo X3, вот он-то и портит нам картину этим сообщением. Что характерно, Office ставился уже после того, как был установлен Lingvo.

Чтобы убрать это надоедливое сообщение (пока в ABBYY не смогут пофиксить проблему, правда, зная сколько они делают Lingvo для Андроида, возможно этого не случится никогда), нужно:

зайти в %APPDATA%MicrosoftWordStartup и переименовать файл Lingvo14.dotm. Делать это нужно при не запущенном офисе.

Запуск макроса при закрытии книги

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

Visual Basic

Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘код макроса
End Sub

1
2
3

PrivateSubWorkbook_BeforeClose(Cancel AsBoolean)

‘код макроса

EndSub

Другие основные обрабатываемые события для книги:

  • Activate — событие, происходящее при активации книги (т.е. при переходе из другой активной книги в данную);
  • Deactivate — событие, происходящее при переходе в другую книгу;
  • SheetActivate — событие, происходящее при активации листа книги;
  • SheetDeactivate — событие, происходящее при переходе на другой лист книги;
  • SheetCalculate — событие, происходящее при пересчете формул на листе;
  • BeforePrint — событие, происходящее при печати книги;
  • BeforeSave — событие, происходящее при сохранении книги;
  • NewSheet — событие, происходящее при создании нового листа книги.

Корректируем макрос

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

Нажимаем кнопку “Макросы” (или комбинацию Ctrl+F8).
В появившемся окошке выбираем наш макрос и щелкаем “Изменить”.

На экране отобразится окно редактора “Microsoft Visual Basic”, в котором мы можем внести правки. Структура каждого макроса следующая:открывается с команды “Sub”, закрывается – “End Sub”;

после “Sub” отображается имя макроса;
далее указано описание (если оно есть) и назначенная комбинация клавиш;
команда “Range(“…”).Select” возвращает номер ячейки. К примеру, “Range(“B2″).Select” отбирает ячейку B2.
В строке “ActiveCell.FormulaR1C1” указывается значение ячейки или действие в формуле.

Давайте попробуем скорректировать макрос, а именно, добавить в него ячейку B4 со значением 3

В код макроса нужно добавить следующие строки: Range(«B4»).Select ActiveCell.FormulaR1C1 = «3»

Для результирующей ячейки D2, соответственно, тоже нужно изменить начальное выражение на следующее: ActiveCell.FormulaR1C1 = «=RC*RC*RC» .
Примечание: Обратите внимание, что адреса ячеек в данной строке (ActiveCell.FormulaR1C1) пишутся в стиле R1C1.
Когда все готово, редактор можно закрывать (просто щелкаем на крестик в правом верхнем углу окна).
Запускаем выполнение измененного макроса, после чего можем заметить, что в таблице появилась новая заполненная ячейка (B4 со значением “3”), а также, пересчитан результат с учетом измененной формулы.

Если мы имеем дело с большим макросом, на выполнение которого может потребоваться немало времени, ручное редактирование изменений поможет быстрее справиться с задачей.Добавив в конце команду Application.ScreenUpdating = False мы можем ускорить работу, так как во время выполнения макроса, изменения на экране отображаться не будут.

Если потребуется снова вернуть отображение на экране, пишем команду: Application.ScreenUpdating = True .

Чтобы не нагружать программу пересчетом после каждого внесенного изменения, в самом начале пишем команду Application.Calculation = xlCalculationManual , а в конце – Application.Calculation = xlCalculationAutomatic. Теперь вычисление будет выполняться только один раз.

Пример 4

Следующая процедура «Sub» читает содержимое ячеек из колонки А другого листа, имеющего название «Sheet2» и с этими значениями осуществляет арифметические операции. Результат вычислений пишется в колонке А текущего листа.

Этот пример показывает:

  1. Как объявлять переменные.
  2. Объекты Excel.
  3. Цикл Do Until. 
  4. Доступ к листам электронных таблиц и диапазонам ячеек с текущей книги.

‘ Подпрограмма, запускающая цикл через значения в колонке А текущего листа

‘ «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»)

i = 1

‘ Прохождение цикла через каждую ячейку колонки ‘Col’ до тех пор, пока

‘ не будет обнаружена пустая ячейка

Do Until IsEmpty(Col.Cells(i))

‘ Применение арифметических операций к значению текущей ячейки

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

‘ Команда ниже копирует результат в колонку А

‘ текущего активного листа — без уточнения названия активного листа

Cells(i, 1) = dVal

i = i + 1

Loop

End Sub

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

​ и увидел там​​ автозагрузки». указывате там​ полезного нашла,но с​ введите код своего​ книги. В случаи,​Личная книга макросов​ используете каждый день,​В окне​ Для удобства также​ файлу вместе с​ & «\»: sDirPath​ макросом сохранить копию​ названии есть в​The_Prist​ свои ответы пока​sFileName = sFileName​ ДОЛЖЕН БЫТЬ В​ возможность «Сохранить копию​ путь.​ этой проблемой не​ макроса. Выберите инструмент​ когда необходимо использовать​.​ при запуске Excel.​Сохранить как​ приводим ссылку на​ его именем If​ = .Names(sPath_in_Names).Value ‘​ текущего файла? ‘​ приёмах:​: Алекс, ну чтоже​ я ввожу свои,​

​ & IIf(Right(sFileName, Len(sExpansion))​​ ДРУГОЙ ПАПКЕ, дабы​ как . «.​в эту папку​ могу справиться: подскажите,пожалуйста,как​ в редакторе макросов:​

​ тот же макрос​​После этого макрос будет​ Вы можете создать​в раскрывающемся списке​ оригинал (на английском​ FileName = .FullName​ если считать не​ Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=16506​Alex_ST​ ВЫ так? Я​ что я их​

​ sExpansion, sExpansion,​​ не было конфликта​Оказалось очень удобно,​ кладете файл с​ правильно сохранить макрос,​ «File»-«Save Personal.xlsb», а​

​ в других файлах​ доступен при каждом​ макроса «Авто_открыть», чтобы​​Тип файла​ языке) .​ Then MsgBox «Здесь​

Что означает макросы и как с ними работать?

Итак, макрос — это некий программный код, который описывает ПОСЛЕДОВАТЕЛЬНОСТЬ ваших действий в документе. Записывается даже перемещение  вашего курсора по ячейкам, нажатие клавиш. Сначала Вы записываете макрос. Когда понадобится, Вы в  Excel запускаете этот код на выполнение и все записанные ранее действия выполняются автоматически. Например, у Вас есть одна и та же таблица, макет  которой  Вы каждую неделю создаете по новый, меняете оформление, или очищаете графы. Вы нажимаете кнопку, и вот, то на что вы тратили 5-10 минут заняло у вас всего одну секунду.

Для начала нужно настроить Excel для работы с макросами. Это просто. На примере Office 2007 покажу как . В более поздних редакциях делается все почти аналогично. Сначала заходим в «Параметры»:

Сначала настроим «Ленту»;  нужно включить «Режим разработчика»:

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

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

Так же нужно доверять доступ к объектной модели проектов VBA. Ведь в Интернете или у коллег можно найти много готовых и интересных проектов VBA написанных для Excel, Word и пользоваться.

Совет № 2: добавьте кнопку «Закрыть все» на панель быстрого доступа

Мы также можем добавить кнопку «Закрыть все» на панель
быстрого доступа (QAT), чтобы закрыть все открытые книги. Это делает то же
самое, что и сочетание клавиш Shift + Close Window.

Преимущество здесь в том, что мы можем использовать сочетание клавиш для нажатия кнопки. Доступ к кнопкам QAT можно получить с помощью сочетания клавиш, нажав клавишу Alt и номер, назначенный кнопке.

Чтобы добавить кнопку «Закрыть все» в QAT, откройте окно параметров Excel («Файл»> «Параметры») и следуйте инструкциям на изображении ниже.

После нажатия кнопки «Закрыть все» нам будет предложено то же окно, как описано в совете № 1.

Бонусный совет: мы также можем использовать сочетание клавиш Ctrl + W, чтобы закрыть одну книгу. Я упомянул этот совет в своем посте по 17 ярлыкам Excel на 2017 год.

Как запустить макросы в Excel

Теперь рассмотрим, как выполняются все созданные ранее макросы в документе Excel.

Если макрос был вставлен в модуль, то он запускается пользователем. У меня такой макрос объединяет несколько ячеек в одну без потери данных.

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

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

Макрос выполнился: нужные ячейки объединены, и текст в них сохранен.

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

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

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

Если Вы создали пользовательскую функцию, то вставлять в документ ее также надо как функцию. У меня такая функция должна рассчитывать НДС.

Например, применим ее к ячейке А1, со значением «100». Выделяем ячейку, в которую будет вписан результат. Затем переходим на вкладку «Формулы» и нажимаем кнопочку «Вставить функцию».

Откроется окно «Мастер функций». В поле «Категория» выбираем из выпадающего списка «Определенные пользователем», в поле «Выберите функцию» выбираем название из списка: «NDS». Нажимаем «ОК».

Затем выделяю ячейку, для которой нужно посчитать НДС, и нажимаю «ОК».

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

 

Об авторе: Олег Каминский

Вебмастер. Высшее образование по специальности «Защита информации». Создатель портала comp-profi.com. Автор большинства статей и уроков компьютерной грамотности

Экономия 5 минут в час за счет более продуктивной работы дает за год экономию в 4 рабочие недели

VBA в PowerPoint

Зачем нужны макросы в PowerPoint?

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

  • Добавить на каждый слайд презентации progressbar с показом оставшегося количества слайдов
  • Убрать весь alternative text, заголовки и гиперссылки с каждой формы и рисунка
  • Автоматически рисовать фигуру по заданным параметрам, например, для перехода в определенное место презентации
  • Создать умное оглавление
  • Сделать вышеперечисленное для всех презентаций в папке (пользуясь случаем – передаю привет трудягам, у кого их больше 30 на периодическом обновлении)

Как создавать макросы?

Если вы привыкли создавать и запуска макросы из файла с поддержкой макросов – здесь все без изменений. Привычным нажатием на Alt + F11 (или с вкладки Разработчик на ленте) заходите в VBE, добавляете модуль и вставляете код макроса. Запустить код можно по кнопке Run или по нажатию на F5.

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

В PowerPoint привычные действия такого результата не дадут. Даже если вы сохраните вашу презентацию с поддержкой макросов и написанным кодом как надстройку, подключите ее, то вы не сможете запускать макросы. Честное слово, можете попробовать самостоятельно. Я раз 5 попробовал прежде, чем смотреть в интернете в чем же все-таки дело.

А проблема в том, что по умолчанию в PowerPoint вы не можете даже открыть на чтение код макросов в надстройках . Поэтому идем дальше:

Прописываем в регистре Windows возможность редактирования надстроек

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

  • Нажмите на клавиши Win + R
  • В появившемся окне вводим regedit
  • Идем в папку HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0PowerPointOptions (12.0 для Office 2007, 14.0 для Office 2010, 15.0 для Office 2013, 16.0 для Office 2016)
  • Щелкаем в правом окне правой кнопкой мыши –> New -> DWORD
  • Имя = DebugAddins, значение = 1

Перезапустите PowerPoint – теперь вы сможете видеть в среде VBE код макросов из надстроек.

**Как добавлять/Убирать макросы из надстройки PowerPoint **

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

А вот в PowerPoint это не так. Не знаю точно из-за чего сделано это ограничения, но кнопка сохранить не производит никаких изменений в вашу надстройку.

Поэтому моя рекомендация – всегда хранить у себя копию надстройки в виде презентации с поддержкой макросов. Если нужно внести изменения в надстройку, то:

  • Идем в презентацию с поддержкой макросов
  • Вносим изменения в код макросов. Сохраняем изменения в презентации
  • В параметрах PowerPoint отключаем подключенную надстройку
  • Сохраняем презентацию с поддержкой макросов как надстройку с перезаписью
  • В параметрах PowerPoint подключаем надстройку

Непростые манипуляции по сравнению с Excel, да?

Проблема с панелью быстрого доступа

Для тех, кто также как и я, любит добавлять кнопки на панель быстрого доступа:

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

Для себя я остановился на запуске макросов из VBE по кнопке F5.

Если вы все еще не передумали насчет макросов в PowerPoint, то:

Ресурсы по VBA в PowerPoint

Как вы, наверное, догадались – литературы по VBA в PowerPoint как таковой нет. По крайней мере, я не нашел – если поделитесь ссылкой буду рад.

Со статьями на английском языке немного попроще – для себя нашел весьма полезными ресурсы

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

Вы уже знаете про абсолютные и относительные ссылки в 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»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален

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

Сохранение макроса

​: К стати, не​ окно задания пути​ ещё как-то. ​FileFormat:=xlNormal, _​ совпадают. ).​ редакторе Personal и​ в нее новый​ нажмите комбинацию горячих​.​Чтобы при запуске Excel​ содержать неточности и​

Сохранение макроса в текущей книге

​ два варианта:​Мы стараемся как​ _ FileFilter:=»Excel Files​ InStrRev(FileName, «.») +​ общем ресурсе.​​ «»)​​ подскажите «на вскидку»​​ сохранения файла -​​В чём хитрость-то?​Password:=»», _​или​ туда вставить модуль?​ макрос просто откройте​ клавиш ALT+F11. В​При закрытии Excel в​ автоматически открывались книги,​ грамматические ошибки. Для​Сохранить в виде книги​ можно оперативнее обеспечивать​

​ (*» & sExp​ 1) ‘ расширение​Достало постоянно выбирать​​If sFileName =​​ как к имени​

​ это «две большие​The_Prist​WriteResPassword:=»», _​​- сказать Ёкселю​​z_korch​

​ редактор, а потом​ окне «Project-VBAProject», в​ конечном итоге будет​

​ выполните указанные ниже​​ нас важно, чтобы​​ с поддержкой макросов​

​ вас актуальными справочными​​ & «), *»​​ файла вместе с​​ куда и какой​​ ThisWorkbook.FullName Then​​ файла при сохранении​ разницы» . ​​: А кто мешает​

​ReadOnlyRecommended:=True, _​​ «Сохранить как. » и​​: Может я не​

Создание и сохранение макросов в личной книге

​ откройте модуль книги​ дереве проектов появиться​ предложено сохранить изменения​ действия.​ эта статья была​ (XLSM-файл), выбрав​ материалами на вашем​ & sExp &​ точкой (например, «.xls»)​ файл сохранять. ​MsgBox «Нельзя сохранить​ добавить перед расширением​The_Prist​ перед этим вывести​

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

Вы уже знаете про абсолютные и относительные ссылки в 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»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален

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

Как сохранить макрос в excel для всех книг

Создать макрос в Excel можно, запустив средство записи макросов или с помощью редактора Visual Basic для приложений (VBA). После создания макроса следует сохранить его для возможности повторного использования в текущей или в других книгах.

Сохранение макроса в текущей книге

Если понадобится использовать макрос только в той книге, где он был создан, нажмите кнопку Сохранить или Сохранить как так же, как при обычном сохранении. Но сохранение книги с макросами происходит несколько иначе, поскольку необходимо использовать специальный формат файла «с поддержкой макросов». Поэтому при попытке сохранить макрос Excel предложит два варианта:

Сохранить в виде книги с поддержкой макросов (XLSM-файл), выбрав Нет.

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

Чтобы сохранить макрос как книгу с поддержкой макросов,

щелкните Нет.

В окне Сохранить как в раскрывающемся списке Тип файла выберите Книга Excel с поддержкой макросов.

Запуск макроса при открытии листа

Workbook_SheetActivate — событие, происходящее при открытии любого листа в книге.

Visual Basic

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
‘код макроса
End Sub

1
2
3

PrivateSubWorkbook_SheetActivate(ByValSh AsObject)

‘код макроса

EndSub

При этом макрос будет работать при открытии любого листа в данной книге.
Если же необходимо обработать событие для какого-то конкретного листа книги, то нужно выбрать модуль с названием данного листа:

Модуль листа

WorksheetActivateCalculate

Worksheet_Activate — событие, происходящее при активации листа в книге.

Visual Basic

Private Sub Worksheet_Activate()
‘код макроса
End Sub

1
2
3

PrivateSubWorksheet_Activate()

‘код макроса

EndSub

Другие основные обрабатываемые события для листа:

  • Activate — событие, происходящее при активации листа;
  • BeforeDoubleClick — событие, происходящее по двойному щелчку по любой ячейке листа;
  • BeforeRightClick — событие, происходящее при нажатии правой кнопки мыши на любой ячейке листа;
  • Calculate — событие, происходящее при пересчете формул на листе;
  • Change — событие, происходящее при изменении значений ячеек на листе;
  • Deactivate — событие, происходящее при переходе на другой лист книги;
  • FollowHyperlink — событие, происходящее при переходе по гиперссылке на листе;
  • SelectionChange — событие, происходящее при изменении адреса выделенной области.

Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru!

Пошаговые инструкции по созданию макроса в PowerPoint с нуля

. Макрос являются широко полезными инструментами при правильном использовании. Не все знакомы с такой функцией, поэтому мы предоставили руководство шаг за шагом, как создать макрос в PowerPoint с нуля . Следует учитывать, что версии после PowerPoint 2013 не имеет средства записи макросов . В этих случаях, чтобы создать или изменить его, вы должны запустить Visual Basic для приложений (VBA) .

Следующие шаги следующие:

  • Перейти на вкладку “Отображать”. Затем нажмите кнопку Кнопка «Макро». Он расположен вверху справа.
  • Откроется новое диалоговое окно. Там вы должны введите имя макроса.
  • Внизу этого окна вы можете найти раскрывающееся меню с названием «Макро в». Щелкните это меню и выбрать модель или презентация, в которую вы хотите включить новый макрос. Наконец, добавьте описание в Поле «Описание».
  • Когда все поля будут заполнены, нажмите “Создавать” в диалоговом окне. Это сразу открывает окно Визуальный Бейсик .
  • Тогда вам нужно добавить программный код для VBA , в зависимости от задачи, которую вы хотите автоматизировать.
  • После ввода кода переходим во вкладку “Файлы” в Visual Basic и выберите «Закройте и вернитесь в Microsoft PowerPoint». Таким образом, макрос будет записан в вашу презентацию.

Позже он вам просто нужно добавить кнопку, запускающую макрос в документе. Вы также можете активируйте вкладку «Разработчик», выполнив щелкните правой кнопкой мыши на панели инструментов и выберите «Настроить ленту» . Таким образом, у вас будет более полное меню для работы с макросами, а также открыть Визуальный Бейсик . В Кнопка “Сохранить макросы” , вы можете назначить кнопку или клавишу для запуска только что созданного макроса. Наконец, просто нажмите “ХОРОШО” и макрос будет готов работать.

Получение списка файлов в папке и подпапках средствами VBA

Функция VBA для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках

Пример в файле FilenamesCollection.xls выводит список файлов на чистый лист новой книги (формируя заголовки)

Пример в файле FilenamesCollectionEx.xls более функционален — он, помимо списка файлов из папки, отображает размер файла, и дату его создания, а также формирует в ячейках гиперссылки на найденные файлы.

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

  • 158 комментариев
  • Читать далее
  • 234694 просмотра
  • 2 прикреплённых файла

Применение в других функциях и процедурах VBA

Пользовательские функции также можно использовать в макросах VBA.

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

Код макроса содержит пользовательскую функцию GetMaxBetween(.Cells, 10, 50). Она находит нужное максимальное значение в активном столбце. Затем это значение будет выделено цветом.

Результат работы макроса вы видите на скриншоте ниже.

Также пользовательская функция может быть использована внутри другой пользовательской функции. Проблема конвертации числа в текст обычно решается при помощи пользовательской функции. Функция SpellNumber отлично выполняет эту задачу, добавляя также денежные единицы измерения (рубли). Вот код этого макроса:

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

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

Как видите, функция GetMaxBetween является аргументом другой пользовательской функции – SpellNumber. Сначала она определяет максимальное значение, как мы уже неоднократно делали ранее. Затем это число преобразуется в текст.

На скриншоте выше вы видите, как функция SpellGetMaxBetween находит максимальное число в диапазоне от 5000 до 7000, а затем конвертирует его в текст.

Решение ошибки «Макрос не найден» 15.09.2015

При очередной установке макросов для Word 2010 внезапно обнаружил, что они не запускаются, только выбрасывается ошибка «Макрос не найден. Возможно, он отключен по соображениям безопасности». Все настройки в «Центре безопасности» уже выставлены, все файлы на месте. В интернете только вопросы от пользователей, и соответствующие ответы, согласно которым надо просто отключить или удалить макросы, и ошибки не будет. От программистов никаких советов не было. Хорошо, что я случайно нашел решение на MSDN. Дело оказалось в том, что некоторые функции, использующие библиотечные вызовы Windows, и разработанные для 32-битных систем, не могут быть безопасно скомпилированы на 64-битных системах, и для того, чтобы сказать компилятору, что всё ок, типа можно компилировать, надо добавить после слова Declare ключевое слово PtrSafe , т.е. получается следующее:

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

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

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

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

Если в выполняемом макросе произошел сбой, отображается сообщение об ошибке макроса.

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

Аргумент содержит недопустимое значение. Как правило, причина ошибок такого рода — попытка обратиться к несуществующему объекту, например Книга(5), когда открыты только три книги.

Указанный метод нельзя использовать в данном контексте. Например, некоторые методы объекта Range требуют, чтобы диапазон содержал данные. Если в диапазоне их нет, метод выдает ошибку.

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

(Эта проблема не относится к Mac) Метод или свойство нельзя использовать с текущими параметрами безопасности. Например, свойства и методы объекта VBE для работы с кодом на языке Visual Basic для приложений (VBA), хранящимся в документах Microsoft Office, по умолчанию недоступны.

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

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

На вкладке Разработчик в группе Код выберите элемент Безопасность макросов.

В разделе Параметры макросов для разработчика установите флажок Доверять доступ к объектной модели проектов VBA.

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

Как сохранить макрос в личную книгу макросов

Чтобы создать и схоронить код в личной книге макросов:

  1. Выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Запись макроса».
  2. В появившемся диалоговом окне «Запись макроса», из выпадающего списка «Сохранить в:» выберите опцию «Личная книга макросов». И нажмите на кнопку OK.
  3. Теперь выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Остановить запись».
  4. Откройте редактор Visual Basic: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11. В окне «Project-VBAProject», в дереве проектов появиться доступная еще одна книга Personal.xlsb. Кликните на «плюсик» слева на против этой книги, чтобы раскрыть проект книги Personal.xlsb. А после двойным щелчком отройте ее Module1.
  5. В результате откроется окно кода модуля с зарегистрированным макросом. Удалите его код и введите код своего макроса. Выберите инструмент в редакторе макросов: «File»-«Save Personal.xlsb», а потом закройте редактор Visual Basic.



Теперь у вас подключена скрытая книга для хранения макросов, к которым можно получить доступ из любой другой рабочей книги. Личная книга макросов где находится находиться в папке автозагрузки файлов Excel – XLSTART: C:Documents and SettingsUser_NameAppDataRoamingMicrosoftExcelXLSTARTPersonal.xlsb

Примечание. XLSTART – это папка для автозагрузки файлов вместе с запуском программы Excel. Если сохранить файл в данную папку, то он будет открываться вместе с программой Excel. Для версий старше 2007 путь к папке автозагрузки будет следующим: C:Program FilesMicrosoft OfficeOffice12Xlstart.

Если вам нужно записать в нее новый макрос просто откройте редактор, а потом откройте модуль книги Personal.xlsb. Уже записанные в нее макросы удалять не нужно. Они не будут между собой конфликтовать если соблюдать одно простое правило – в одном модуле нельзя хранить макросы с одинаковыми именами.

Что делать, если макрос не запускается.

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

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

Необходимо: • Войти в меню «Файл». • Далее «Параметры». • В открывшемся окне выбрать вкладку «Центр управления безопасностью». • Кликнуть по кнопке «Параметры центра управления безопасностью»

• Выбрать вкладку «Параметры макросов»

• Установить флажок напротив пункта «Включить все макросы…» и нажать «ОК».

Теперь после запуска макросы будут выполняться без проблем.

Понравилась статья? Поделиться с друзьями:
Самоучитель Брин Гвелл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: