Статьи из блога

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

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

 

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

 

Первый вариант: создание макроса с помощью диалогового окна Макрос

  • В меню Сервис наведите указатель мыши на пункт Макрос и в раскрывшемся подменю выберите команду Макросы. Если вы работаете в Word 2007, то перейдите на вкладку Разработчик и в группе команд Код нажмите кнопку Макросы. Откроется диалоговое окно Макрос:

     

    Диалоговое окно Макрос

     

    Это же диалоговое окно также можно открыть с помощью сочетания клавиш «Alt»+«F8».

  • В поле Имя введите наименование для макроса.
  • В поле Макросы из выберите строку Активных шаблонов. В этом случае созданный вами макрос будет доступен для всех документов, основанных на шаблоне Normal.dot.

  • В поле Описание можете ввести краткую информацию о назначении макроса. Этот текст будет размещен в коде макроса в качестве комментария.
  • Нажмите кнопку Создать. После этого Word запустит редактор Visual Basic, создаст модуль (если ранее он не был создан) NewMacros в шаблоне Normal.dot и добавит начальные строки подпрограммы и комментарий (шрифт зеленого цвета с апострофом перед текстом комментария), введенный вами в поле Описание:

     

    Окно редактора Visual Basic
  • В то место, где находится курсор ввода (между комментариями и оператором End Sub, вставьте ваш код (скопированный без начальных операторов Sub и End Sub).
  • Проверьте работоспособность макроса, нажав кнопку Run Sub на панели инструментов редактора Visual Basic или воспользуйтесь клавишей «F5».
  • Назначьте данному макросу сочетание клавиш или поместите созданную для макроса кнопку на панель инструментов или добавьте кнопку на панель быстрого доступа (для Word 2007).

Второй вариант: создание макроса из готового кода

  • Сохраните все документы, с которыми вы в настоящий момент работаете и создайте новый документ.
  • Нажмите сочетание клавиш «Alt»+«F11». Откроется редактор Visual Basic с пустым (или уже содержащим какой-либо программный код ) окном.
  • Вставьте в окно редактора скопированный код (если он существует в электронном виде) или наберите код макроса вручную, включая операторы начала процедуры Sub и конца процедуры End Sub.
  • Проверьте работоспособность макроса, нажав кнопку Run Sub на панели инструментов редактора Visual Basic или воспользуйтесь клавишей «F5».
  • Назначьте данному макросу сочетание клавиш или поместите созданную для макроса кнопку на панель инструментов или добавьте кнопку на панель быстрого доступа (для Word 2007).

 

Рубрика: Макросы
Метки: |
Просмотров: 102057
Подписаться на комментарии по RSS
Версия для печати

[Ссылки на статью]

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 35

  1. Алексей
    10.04.2008 в 11:14 | #1

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

  2. 10.04.2008 в 11:28 | #2

    Наверное, вопрос требует уточнения: в какой именно момент должен выполняться макрос? Можно сделать свой макрос отправки документа на печать и выполнения перед этим какого-то действия (другого макроса), или после.

  3. Алексей
    10.04.2008 в 12:16 | #3

    Макрос должен выполняться во время печати.

    До или после некоторого элемента документа.

    В частности макрос выполняет разрыв страницы.

  4. 10.04.2008 в 12:42 | #4

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

  5. Алексей
    10.04.2008 в 13:48 | #5

    Антон,выполнение макроса "во время печати" - имеется в виду во время формирования документа на печать. (Конечно, если документ сформирован и помещен в спул ничего не сделаешь).

    И еще требуется узнать при формировании документа на печать

    как далеко находится некоторый элемент от края страницы т.е.

    уместиться еще вместе несколько строчек или нет. Строки разрывать

    на разных листах нельзя. (Колонтитулы не подходят).

    Макрос я пробовал привязать к элементу - поле. (Панель формы,

    кнопка текстовое поле - выполнить макрос) - не получается.

  6. Alexander
    04.09.2008 в 10:43 | #6

    Интересно, жива ли тема? Но все же попытаюсь.

    Имеется книга чисто макросов. Она не меняется. Эти макросы используются в целом ряде других книг, к. содержат чисто данные. Данные обновляются от одного до нескольких раз в месяц. И каждый раз создаются новые книги. В 2003 офисе добавил кнопку на панель инструментов, назначил ей макрос и указал путь к книге макросов. Все работало замечательно. Перешли на 2007 и все встало. Такой вариант работает только в том случае, если макрос внедрить в книгу (а их около 20 шт. и постоянно создаются новые взамен устаревших), что не есть удобно. Попробовал такой вариант. Открыл книгу макросов, добавил кнопку на быструю панель, подцепил к ней макрос. Потом открываю сразу два файла - макросы и данные. В этом случае макрос запускается, но потом вываливается с ошибкой. Ругается на глобальные переменные. Подозреваю, из-за того, что пытается выполнить в контексте книги данных, а не книги макросов.

    Что делать?

  7. 04.09.2008 в 12:02 | #7

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

    Александр, вы наверное ведете речь о книгах Excel? Рекомендую обратиться с этим вопросом на спец.сайт по Excel: http://msexcel.ru/.

  8. Alexander
    05.09.2008 в 09:04 | #8

    На самом деле речь идет о любых макросах, хоть Word, хоть Excel. Даже ВООБЩЕ не о макросах, а об интерфейсе 2007 офиса. Как вообще в 2007 офисе подцепить кнопку со ссылкой на макрос, к. физически находится в другом файле? Расскажите на примере Word 2007. Уверен, что интерфейс у них абсолютно схож. Поэтому все, что верно для Word 2007, будет верно и для Excel 2007.

    P.S. За ссылку спасибо. Сайт и форум интересные, хотя ответа на свой вопрос я так и не нашел.

    P.S.S. Ошибка вылетала из-за неправильно введнных данных в ячейки. С этим разобрался. Т.е. макрос, подключенный из внешнего источника, все-таки работает. Только мне надо теперь это дело сделать "красиво" и без "костылей"

  9. 05.09.2008 в 10:16 | #9

    Александр, я могу ошибиться, но вы не совсем правы, говоря что:

    Поэтому все, что верно для Word 2007, будет верно и для Excel 2007.

    Если я не прав, то откройте глобальный шаблон Excel и добавьте туда нужные макросы, которые затем будут доступны на вкладке "Надстройки". Но я не уверен, что есть глобальный шаблон у Excel; но в Wordе это Normal.dot (dotx). И когда этот шаблон содержит нужные макросы, то они все доступны на упомянутой вкладке в любых документах, создаваемых на основе этого глобального шаблона.

    Как в Excel это реализовать, я не знаю.

    Кстати, вот еще одна полезная ссылка: сайт RusFAQ.ru (http://rusfaq.ru/issues/5/5/172).

  10. 05.09.2008 в 10:23 | #10

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

    В Word макросы размещаются в шаблонах, которые затем можно подключить к текущему документу через диалоговое окно "Шаблоны и надстройки" (вкладка Разработчик - группа команд Шаблоны - кнопка Шаблон документа).

    Как видите, хоть интерфейс у Word и Excel внешне одинаков, но функционально они совершенно разные.

  11. Юрий
    06.11.2009 в 21:55 | #11

    Скажите, позволяет ли MS Word 2003 присваивать различные картинки кнопкам макроса, вынесенным на панель инструментов? Спасибо!

  12. 07.11.2009 в 07:39 | #12

    Юрий, да это возможно. Вот, как пример эта заметка.

  13. Гость
    26.03.2010 в 14:02 | #13

    Ребята, если уж вы пишете статью "Создание макроса из готового кода", то уж опишите плиз как сделать ваш совет "Назначьте данному макросу сочетание клавиш или поместите созданную для макроса кнопку на панель инструментов или добавьте кнопку на панель быстрого доступа", т.к. таких команд в VB-редакторе я не нашёл.

  14. 26.03.2010 в 15:40 | #14

    Гость, это не команды VB-редактора, а стандартные действия в редакторе Word. Специально для вас обратился к форме поиска по сайту (в левой верхней части сайта под логотипом), ввел фразу "как назначить сочетание клавиш" и получил конкретную заметку по теме: Как назначить сочетания клавиш для макросов.

    По панели быстрого доступа сможете самостоятельно найти?

  15. Татьяна
    20.04.2010 в 12:20 | #15

    Я вставляю макрос

    Sub deleteAllHeaders_Footers()
    Dim sec As Section
    Dim hf As HeaderFooter
    For Each sec In ActiveDocument.Sections
    For Each hf In sec.Headers
    hf.Range.Delete
    Next hf
    For Each hf In sec.Footers
    hf.Range.Delete
    Next hf
    Next sec
    'Переключаемся в режим отображения колонтитулов
    ActiveDocument.Windows(1).View.SeekView = wdSeekCurrentPageFooter
    'Переключаемся к основному документу
    ActiveDocument.Windows(1).View.SeekView = wdSeekMainDocument
    End Sub

    вставляю его между комментариями и оператором End Sub скопированный без End Sub нажимаю F5 и выскакивает окно compile error: expected end sub

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

  16. 20.04.2010 в 12:51 | #16

    Я так понимаю, что Вы его вставляете внутрь своей процедуры? Тогда нужно копировать строки, которые находятся между Sub…End Sub

    А у Вас получается, что внутри одной процедуры, Вы объявляете ещё одну, что запрещено.

  17. Аноним
    20.04.2010 в 14:26 | #17

    Я попробовала вставить без начального Sub.

    Теперь пишет syntax error и выделяет красным DeleteAllHeaders_Footers()

  18. 20.04.2010 в 15:19 | #18

    Возможно, у вас два макроса с одинаковыми именами. Проверьте...

  19. 20.04.2010 в 15:48 | #19

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

  20. бронич
    19.05.2010 в 10:09 | #20

    Помогите пожалуйста . Напишите код для поиска и замены текста пожалуйста

  21. 19.05.2010 в 11:43 | #21

    Все уже давно написано и опубликовано. Читайте и ищите поиском по сайту. Вот конкретная ссылка на полезные заметки по теме:

    Поиск и замена

  22. Ирина
    29.07.2010 в 10:01 | #22

    перелопатила по-моему уже половину инета, но так и не поняла, как вносить изменения в макросы?

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

    я так понимаю, работать придется в VBA?

    помогите, пожалуйста, разобраться)

  23. 29.07.2010 в 11:28 | #23

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

  24. Ирина
    29.07.2010 в 12:32 | #24

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

    написала и даже перечитывать не хочу, потому что бред по-моему какой-то))

    возможно ли такое в макросах? или макрос - это определенный алгоритм действий и изменять/дополнять их можно только посредством изменения самого макроса?

  25. Ирина
    29.07.2010 в 12:34 | #25

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

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

  26. 02.08.2010 в 12:22 | #26

    Ирина, макросом можно много чего делать: и выбирать, и обрабатывать введённую информацию и много чего другого. Рекомендую к прочтению книгу Марка Розенберга "Комфортная работа с помощью макросов"

  27. Ирина
    03.08.2010 в 09:58 | #27

    спасибо за помощь! попробую найти эту книгу)

  28. Максим
    03.08.2010 в 16:04 | #28

    Товарищи! Нужна помощь в создании макроса.

    Есть документ (word) с текстовыми полями, для заполнения которых нужно кликнуть на них 2 раза, после чего откроется окно "Параметры текстового поля" и уже там вводить его содержание. Макрос же должен обеспечивать ввод текста в это поле сразу (при его(поля) выделении)

    Заранее, спасибо!

  29. 03.08.2010 в 16:25 | #29

    А зачем макрос? Отключите "Режим разработчика" и текст можно будет вводить сразу в поле.

  30. Lana
    20.04.2011 в 15:19 | #30

    Вы знаете как создать кнопку в Ехсеl, которая бы рассчитывала коэффициенты

    линии тренда для неопределённого числа столбцов ?

    U1 U2 U3 .... Un

    0 1,201

    1 1,210

    2 1,226

    3 1,235

    4 1,245

    5 1,255

    6 1,264

    7 1,274

    8 1,284

    9 1,293

    10 1,303

    20 1,401

    30 1,499

    40 1,595

    50 1,693

    100 2,181

    150 2,673

    200 3,163

    250 3,650

    коэффи-

    циенты:

    a0

    a1

    a2

  31. я
    11.05.2011 в 12:14 | #31

    подскажите плиз как создать макрос в ворде выставление параметров

  32. Константин
    22.04.2014 в 16:37 | #32

    Огромное спасибо!

  33. Владимр
    24.05.2015 в 19:45 | #33

    Еще помогает восстановление системы (попробовал, получилось)

  34. Алекс
    04.05.2017 в 15:10 | #34

    Спасибо!!!

  35. Лара
    27.07.2018 в 18:01 | #35

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

Оставьте комментарий!

(обязательно)

^ Наверх