Vba for word 2010

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

Включение макроса в Word 2010
Перейдите на вкладку ленты Разработчик. Если этой вкладки на вашей ленте нет, откройте окно Параметры Word и на вкладке Основные установите флажок на параметре Показывать вкладку «Разработчик» на ленте.

Включение макроса в Word 2010

 На вкладке “Разработчик” в группе команд “Код” нажмите кнопку “Начать запись”. Откроется диалоговое окно Запись макроса.

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

Запускаем запись макроса 
Нажмем ОК и начнется запись макроса.
Напечатаем текст и добавим ему цвет.

Создаем текст

 После чего нажмем “Остановить макрос”.
Для запуска макроса нужно нажать кнопку “Макросы” или комбинацию клавиш “Alt + F8”, так же макросу можно задать в личную комбинацию клавиш или вывести кнопку в меню.

Макрос

 Запустив окно “Макрос” выбираем нужный нам макрос и нажимаем выполнить, после чего он вставить в нужное нам место наш текст.

Создание макроса с помощью редактора Visual Basic for Applications (VBA).

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

Макросы для Word пишутся на языке программирования Visual Basic for Applications (VBA).
Макросы создаются в компоненте Word, который большинство пользователей никогда не видят, — в редакторе Visual Basic (VBE). Открыть редактор Visual Basic можно одним из указанных ниже способов.

  • Нажмите сочетание клавиш ALT + F11
  • Нажмите кнопку Visual Basic на вкладке Разработчик. Для этого откройте вкладку Файл и нажмите кнопку Параметры. В диалоговом окне Параметры Word нажмите кнопку Настройка ленты. В правой части диалогового окна выберите вкладку Разработчик. Нажмите кнопку ОК, чтобы вернуться к документу, а затем нажмите на вкладке Разработчик кнопку Visual Basic.
  • Добавление команды Visual Basic на панель быстрого доступа.

VBA 
Перед тем как приступить к работе с редактором Visual Basic, выберите в меню Сервис пункт Параметры. В диалоговом окне Параметры установите на вкладке Редактор все флажки.

В левом верхнем углу редактора Visual Basic расположено Окно проекта. В нем отображаются все файлы, открытые в Word в настоящий момент. Там должны отображаться файлы Normal (соответствующий шаблону Normal.dotm) и TheDocument (только что созданный файл).

На приведенном ниже рисунке показан проект TheDocument в окне проекта редактора Visual Basic.
В файле макросы хранятся в виде модулей. Чтобы добавить в файл модуль, выберите в окне проекта файл TheDocument. В меню Вставка выберите пункт Модуль. После добавлении модуля в файл этот модуль появится в окне проекта и в расположенном под ним окне свойств. В окне свойств модуль можно переименовать или оставить имя по умолчанию Module1.

VBA project

 Написание макроса

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

Нам нужен макрос для переключения между двумя способами перехода по гиперссылке в Word. Он будет работать так же, как и другие кнопки, предназначенные для переключения между значениями параметра в Word. Кнопка Полужирный на вкладке «Главная», например, выделяет текст полужирным шрифтом, если он не был выделен, и отменяет полужирное начертание в противном случае.

Скопируйте и вставьте через буфер обмена приведенный ниже пример кода макроса в окно кода.

Sub ToggleHyperlinkCtrlClick()
    Options.CtrlClickHyperlinkToOpen = Not Options.CtrlClickHyperlinkToOpen
End Sub

Это короткий макрос ToggleHyperlinkCtrlClick, состоящий только из одной строки кода. Эта строка означает «Изменить текущее значение параметра Word, определяющего необходимость использования сочетания CTRL + щелчок для перехода по гиперссылке, на противоположное (Not).

Пример кода

 Тестирование макроса

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

  1. Разместите окна Word и редактора Visual Basic рядом друг с другом.
  2. Щелкните главное окно Word. Введите в документ http://google.com
  3. В редакторе Visual Basic щелкните в любом месте макроса. Чтобы запустить макрос, выберите в меню Выполнить команду Выполнить процедуру/форму пользователя или нажмите клавишу F5.
  4. Значение параметра, определяющего способ перехода по гиперссылке, изменится. Наведите указатель мыши на гиперссылку в главном окне Word и убедитесь, что подсказка изменилась.
  5. Чтобы переключить значение, запустите макрос повторно.

Тестирование 

Макрос также можно запустить непосредственно в приложении Word. На вкладке Вид в группе Макросы нажмите кнопку Макросы. Откроется диалоговое окно Макрос, где в списке макросов будет и макрос ToggleHyperlinkCtrlClick. Чтобы запустить ваш макрос, щелкните его имя и нажмите кнопку Выполнить.

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

Создание кнопки на панели быстрого доступа

  1. Щелкните панель быстрого доступа правой кнопкой мыши и выберите в контекстном меню команду Настройка панели быстрого доступа. В разделе Настройка панели быстрого доступа выберите в списке Выбрать команды из пункт Макросы. В списке «Настройка панели быстрого доступа» выберите файл MyWordTools.dotm. (Это необходимо, чтобы приложение Word сохранило кнопку на панели быстрого доступа в файле MyWordTools.dotm. Если этого не сделать, при копировании файла на другой компьютер кнопка отображаться не будет.) Выберите макрос ToggleHyperlinkCtrlClick и нажмите кнопку Добавить.
  2. Нажмите кнопку Изменить, чтобы выбрать символ и изменить имя на ToggleHyperlinkCtrlClick.
  3. Теперь макрос можно запустить в любой момент, нажав кнопку на панели быстрого доступа.

Дабвление иконки 
Макросы Word могут быть длинными, сложными и многофункциональными. Например, можно написать макрос для обращения к внешней базе данных, выполнения с полученными данными определенных вычислений и возврата результатов в Word. Также можно написать макрос Word для взаимодействия с Excel, PowerPoint или Outlook. В некоторых случаях и простые макросы могут оказаться полезными, позволяя сэкономить время.

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

 Как назначить сочетания клавиш для макросов

  • Откройте диалоговое окно Параметры Word.
  • Перейдите на закладку Настройка ленты и выбираем в командах: Макросы.
  • Потом выбираем наш макрос и с низу жмем сочетание клавиш – настройки.
  • В диалоговом окне настройки клавиатуры выбираем в категории макросы и в окне макросы выбираем нужный нам макрос.
  • Щелкаем в новое сочетание клавиш и жмем на клавиатуре нужную нам комбинацию.
  • Жмем назначить и ок

 
Cочетания клавиш

Примеры кодов:
Удаление лишних пробелов в тексте без использования диалогового окна “Найти и заменить”

Sub ReplaceMultiSpaces()
Dim oChar As Range
For Each oChar In ActiveDocument.Characters
If oChar.Text = » » Then
While oChar.Next(wdCharacter).Text = » «
oChar.Next(wdCharacter).Delete
Wend
End If
Next
End Sub

Расположение двух открытых документов Word рядом

Sub ArrangeDocWindows()
‘ ArrangeDocWindows Macro
‘ Arranges two document windows side by side vertically
Dim iMiddle     As Integer
Dim iClientWid  As Integer
Dim iClientHi   As Integer
Dim iWin1       As Integer
Dim iWin2       As Integer
Dim sPrompt     As String
Dim sWins       As String
Dim i           As Integer   
iClientWid = Application.Width — 9
iMiddle = Fix((iClientWid) / 2)
iClientHi = Application.Height — 94    
iWin1 = 1
iWin2 = 2
If Application.Windows.Count > 2 Then
For i = 1 To Application.Windows.Count
sPrompt = sPrompt & CStr(i) & » — » & Application.Windows(i).Caption & vbLf
Next
sWins = InputBox(«Enter numbers of windows to arrange separated by space.» & vbLf & sPrompt, _
«Choose windows», «1 2»)
If sWins = «» Then
Exit Sub
End If
iWin1 = CInt(Left(sWins, InStr(sWins, » «) — 1))
iWin2 = CInt(Mid(sWins, InStr(sWins, » «) + 1))
End If   
Application.Windows(iWin1).Activate
Application.Windows(iWin1).WindowState = wdWindowStateNormal
With ActiveWindow
.Left = 0
.Top = 0
.Height = iClientHi
.Width = iMiddle
End With   
Application.Windows(iWin2).Activate
Application.Windows(iWin2).WindowState = wdWindowStateNormal
With ActiveWindow
.Left = iMiddle
.Top = 0
.Height = iClientHi
.Width = iClientWid — iMiddle
End With
End Sub
Обратите внимание, что если у вас будет открыто только одно окно, то после нажатия этой кнопки может появиться окно с сообщением редактора кода Visual Basic об ошибке. Закройте его нажав на кнопку End. А в следующий раз будьте внимательны.

Преобразование гиперссылки в документе Word в обычный текст

Sub RemoveHyperlinks()
While ActiveDocument.Hyperlinks.Count > 0
ActiveDocument.Hyperlinks(1).Delete
Wend
Application.Options.AutoFormatAsYouTypeReplaceHyperlinks = False
End Sub

Изменения цвета заглавных букв в тексте

Sub colorAllBig()
Dim fChar As Range
Dim seltext As Range
Dim i As Long
Set seltext = Selection.Range
If Selection.Type = wdSelectionIP Then
MsgBox «Выделите текст»
Else
For Each fChar In seltext.Words
For i = 1 To fChar.Characters.Count
If fChar.Characters(i).Case = wdUpperCase Then
fChar.Characters(i).Font.Color = wdColorRed
Else
fChar.Characters(i).Font.Color = wdColorBlack
End If
Next i
Next fChar
End If
End Sub

Введение

При работе над документами многие люди сталкиваются с необходимостью производить большое количество повторяющихся действий. Одни выполняются в начале работы, другие – в её процессе, третьи – по окончании. Было бы здорово автоматизировать рутинные операции, не так ли? Это сэкономило бы кучу времени и нервов.

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

Несмотря на то, что в приложения встроен макрорекордер, с его помощью можно записать разве что самые простые действия. Для построения сложных сценариев он малопригоден. Однако его можно рассматривать в качестве справочной системы по VBA (Visual Basic for Application), на котором и будут разрабатываться скрипты.

Область применения макросов достаточно широка и ограничивается разве что возможностями языка программирования Visual Basic. Но мы не будем вдаваться в подробности слишком глубоко, а разберём принципы автоматизации работы с приложениями Microsoft Office 2010.

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

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

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

Откройте окно настроек Word (Файл – Параметры) и отметьте флажком вкладку Разработчик в Настройках ленты (см. рисунок 1).

image001

Рисунок 1 – Включаем вкладку «Разработчик»

Сама вкладка выглядит так, как показано на рисунке 2.

image002

Рисунок 2 – Вкладка «Разработчик»

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

Записываем макрос с помощью макрорекордера

Давайте нажмём кнопку Запись макроса группы Код. Эта кнопка также продублирована в строке состояния Word (появляется после включения вкладки) – см. рисунок 3.

image003

Рисунок 3 – Панель состояния Word 2010

После нажатия на кнопку откроется диалоговое окно (см. рисунок 4), где вы можете:

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

Единственное замечание здесь следует сделать насчёт имени макроса – оно не должно содержать пробелов и спецсимволов. Старайтесь обойтись только буквами и цифрами (причём с цифры начинать также нельзя).

image004

Рисунок 4 – Окно «Запись макроса»

Оставим пока в стороне кнопки и клавиши быстрого вызова и просто нажмём ОК.

Кнопка записи макроса в строке состояния изменит свой вид на значок Стоп image005 , а возле курсора появится изображение аудиокассеты. Это говорит о том, что запись началась. Теперь вам просто нужно выполнить действия, которые требуются для достижения результата. Спешить не нужно, поскольку в макрос не записывается продолжительность вашей работы. В нём будет представлен только результат. Учтите только, что в процессе записи вам будет недоступно управление курсором с помощью мыши. И это правильно, поскольку отследить такие перемещения очень сложно.

В качестве учебного примера давайте создадим «фонарь» документа.

«Фонарём» называют элемент, содержащий сведения о документе и его создателе, размещаемый на последней странице. Можно сказать, что это аналог электронных свойств, хотя, пожалуй, именно электронные свойства являются аналогом «фонаря».

image006

После выполнения нужных действий (ввода текста) нажмите на кнопку Стоп image005 . Вам не будет выдано никаких сообщений, но можете не сомневаться, что запись завершилась успешно. Чтобы убедиться в этом, нажмите кнопку Макросы на вкладке Разработчик.

image007

Рисунок 5 – Список доступных макросов

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

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

Всё в том же окне макросов выделите нужную строку и нажмите кнопку Изменить. Откроется окно редактора Visual Basic for Applications (см. рисунок 6). Конечно, этот редактор не очень удобен и его внешний вид и функционал не меняется уже достаточно давно (в отличие от Visual Studio, например), но и с его помощью вы можете писать скрипты. К тому же он входит в состав пакета Microsoft Office, а Visual Studio Professional нужно приобретать отдельно за немалую сумму.

 Untitled-8

Рисунок 6 – Окно редактора Visual Basic for Applications

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

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

Давайте посмотрим на код, созданный макрорекордером.

Sub ИмяМакроса()
End Sub

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

Символ одиночной кавычки обозначает комментарий. Можно использовать также ключевое слово Rem, но это не очень удобно. Текст комментария кодом не является, но очень важно расставлять комментарии по ходу работы над скриптом, иначе вскоре вы с большим трудом будете разбираться в нём.

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

Sub Фонарь()
	' Ввод текста в текущее положение. 
	' Обратите внимание, что в качестве экранирующего символа 
	' использована кавычка. 
	Selection.TypeText Text:="ООО ""Компания""" 

	' Начало нового абзаца (нажатие на Enter) 
	Selection.TypeParagraph 
	Selection.TypeText Text:="Уч. № 8/154" 
	Selection.TypeParagraph 
	Selection.TypeText Text:="Отп. 1 экз. на 10 л." 
	Selection.TypeParagraph 
	Selection.TypeText Text:="Исп. Иванов И.И." 
	Selection.TypeParagraph 
	Selection.TypeText Text:="Тел. 8 (351) 777-77-77" 
	Selection.TypeParagraph 

	' Я не стал использовать поле "Дата", т.к. для фонаря нам нужен 
	' необновляемый текст 
	Selection.TypeText Text:="26.05.2010" 
	Selection.TypeParagraph 

	' Перемещаем курсор вверх на шесть строк, удерживая Shift 
	Selection.MoveUp Unit:=wdLine, Count:=6, Extend:=wdExtend 

	' Теперь мы работаем с выделенным текстом 
	' Задаём шрифт для фрагмента 
	Selection.Font.Name = "Times New Roman" 
	Selection.Font.Size = 8 

	' Задаём различные параметры форматирования абзаца 
	' Ключевое слово With позволяет избежать многократного повторения 
	' Т.е. все свойства, вызываемые внутри блока, принадлежат объекту 
	' Selection.ParagraphFormat. Будто бы мы вызываем их так: 
	' Selection.ParagraphFormat.LeftIndent = ... 
	' Selection.ParagraphFormat.SpaceBefore = ... и т.д. 
	' Очень экономно, если строк много 
	With Selection.ParagraphFormat 
		.SpaceBefore = 0 
		.SpaceAfter = 0 
		.LineSpacingRule = wdLineSpaceSingle 
	End With 
End Sub

Как видите, всё очень просто. Если вы запустите этот скрипт ещё раз, то увидите, что работа выполняется та же самая – лишний код в блоке With действительно был ненужным. Запускать можно прямо из редактора, нажав на кнопку с треугольником (см. рисунок 7) или на клавишу <F5>.

image009 Рисунок 7 – Панель с кнопкой запуска скрипта

Наш скрипт пока ещё далёк от совершенства. Так, запустив его через неделю, вы обнаружите, что дата вставляется старая. Давайте сделаем автоматическое определение даты. Сделать это чрезвычайно просто. Замените строку с жёстким указанием даты на следующую:

Selection.TypeText Date 

Будет использован формат даты по умолчанию, т.е. как раз ДД.ММ.ГГГГ. Заметьте, что я помимо текстовой строки отказался также от использования конструкции Text:= Вы можете удалить её и в остальных позициях, всё равно скрипт будет работать. Я говорю это к тому, что макрорекордер часто вписывает не самые нужные «фразы». Но мы-то пользуемся его кодом только как справочным материалом, поэтому вольны делать всё по-своему.

Ещё можно добавить запрос на номер документа. Понадобится написать одну строчку кода и внести изменения в другую. Запрос текста от пользователя выполняется с помощью функции InputBox():

DocNum = InputBox(«Введите номер документа», «Номер документа»)

DocNum – имя переменной, в которой мы сохраним текст, введённый пользователем в окне ввода. InputBox принимает множество параметров, из которых обязательным является только один – сообщение пользователю. На рисунке 8 видно как редактор выводит подсказку по вызову функции. Параметры в квадратных скобках являются необязательными.

image010 Рисунок 8 – Пишем код в редакторе

Раз уж мы запросили у пользователя номер документа, надо его задействовать в «фонаре».

Selection.TypeText "Уч. № " & DocNum 

Амперсанд (&) объединяет две строки – заготовку и то, что мы получаем от пользователя.

image011 Рисунок 9 – Окно запроса

При запуске скрипта, вы увидите окно запроса (см. рисунок 9). Текст, введённый в поле, будет подставлен в указанную нами строку.

Обратите внимание, что к моменту вывода диалогового окна в документе уже будет введён текст с названием компании. Наверное, стоит сначала запрашивать информацию, а уж потом выводить её всю. Переместите строку кода, отвечающую за InputBox в начало макроса (до вывода первой строки), чтобы избежать раннего отображения сообщения. Также в начале можно задать параметры шрифта и абзаца, избегая необходимости производить выделение и форматирование по окончании вывода текста.

Количество листов проще всего указать через обновляемое поле. Для получения кода можно воспользоваться макрорекордером. Мне он выдал такую строку:

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ 
	"NUMPAGES ", PreserveFormatting:=True
  • Selection.Fields.Add указывает, что мы добавляем поле,
  • Range – куда добавляем (текущее положение),
  • Type и Text – тип поля (numPages),
  • PreserveFormatting – сохранять форматирование при обновлении поля.

Обратите также внимание на символ переноса строки. В Basic каждой команде отводится одна строка. Для удобства чтения кода её можно разнести на несколько строк с помощью подчёркивания. Если нужно разнести её на несколько строк, используйте подчёркивание.

И, пожалуй, последнее, что можно сделать в данном макросе – добавление колонтитула. К сожалению, в Word 2010 макрорекордер не работает с колонтитулами, поэтому приходится самостоятельно разбираться с функциями. Тем не менее, делается это несложно, хотя конструкции и выглядят несколько громоздкими.

' ActiveDocument.Sections(1).Footers отвечает за нижний колонтитул. 
' Если вам нужно обратиться к верхнему, используйте .Headers 
' Параметр wdHeaderFooterPrimary указывает на основной колонтитул. 
' Ещё есть колонтитул первой страницы. Если вы хотите сделать его другим, 
' задействуйте параметр wdHeaderFooterFirstPage. 
' Имя константы длинное, но редактор VBA выведет подсказку, когда вы начнёте ввод. 
' .Range указывает на содержимое колонтитула. Поскольку мы хотим ввести текст, нужно добавить .Text 
' И, конечно, не оставим в стороне номер документа, запрошенный у пользователя. 
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Text = "Уч. № " & DocNum 

' Далее нужно указать параметры текста. Конкретно – выравнивание колонтитула по центру 
' До этого дойти достаточно легко, если использовать подсказки редактора. 
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter 

' Также в колонтитуле поместим номер страницы. Используя подсказки редактора VBA, 
' нетрудно найти нужные параметры вызова, если, конечно, вы владеете английским. 
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).PageNumbers.Add.Alignment = wdAlignPageNumberRight
image012 Рисунок 10 – Используем подсказки редактора VBA

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

Привязка макроса к кнопке

Итак, макрос написан и готов к использованию. Однако вряд ли кто-то будет им пользоваться, используя вкладку Разработчик, т.к. это неудобно. Давайте создадим свою кнопку на вкладке Главная.

image013 Рисунок 11 – Добавляем кнопку быстрого вызова макроса

Я создал новую группу Макросы на вкладке Главная (Office 2010 допускает добавление пользовательских кнопок только в пользовательские группы), добавил соответствующий макрос (см. рисунок 11), а затем переименовал его.

Вот так выглядит теперь панель инструментов:

image014

Рисунок 12 – Кнопка быстрого вызова макроса

Макросы в Excel 2010

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

Так, если вы часто пользуетесь функцией группировки строк в Excel, вам наверняка уже надоело после каждого нажатия кнопки Группировать выбирать пункт Строки и нажимать кнопку ОК, после чего ещё заходить в настройки группировки и снимать флажок Итоги в строках под данными (подробнее о группировке рассказывается в этой статье). Очень эффективным способом решения данной проблемы является создание собственной кнопки группировки строк с привязкой к макросу. Причём макрос очень прост и состоит всего из двух команд:

Sub ГруппироватьСтроки() 
	Selection.Rows.Group 
	ActiveSheet.Outline.SummaryRow = xlAbove 
End Sub 

Сначала мы указываем программе сгруппировать строки, а затем применяем параметр отображения суммарной строки сверху. Добавив кнопку на ленту, вы значительно ускорите работу по созданию структуры данных в книге. Не забудьте только сохранить макрос в личной книге с поддержкой макросов (*.xlsm).

Вопросы безопасности

При работе с макросами следует позаботиться о безопасности. Не запускайте макросы из документов, полученных из неизвестного источника. Поскольку Visual Basic является достаточно мощным языком программирования, на нём можно написать инструкции, которые повредят вашему компьютеру. Наверняка вы уже слышали о макровирусах, разрушающих данные. Написать их на VBA достаточно просто.

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

Программы из пакета Microsoft Office предоставляют некоторую защиту от макровирусов. Давайте посмотрим, как её настроить. Запустите центр управления безопасностью (Файл – Параметры – Центр управления безопасностью – Параметры центра управления безопасностью или нажмите кнопку Безопасность макросов на вкладке Разработчик).

В разделе Безопасность макросов вы можете изменить уровень безопасности (см. рисунок 13). По умолчанию выбран пункт Отключить все макросы с уведомлением. По умолчанию макросы выполнены не будут, но вы получите сообщение об их наличии в документе. Можно также отключить и это уведомление. Особняком располагаются макросы с цифровой подписью. Вы можете создать список издателей, которым вы доверяете. Макросы с цифровой подписью имеет смысл использовать в корпоративной среде, где документооборот более объёмный.

image015 Рисунок 13 – Центр управления безопасностью

Если вы решили оставить уровень безопасности по умолчанию, то при запуске макроса получите оповещение системы безопасности (см. рисунок 14), где вам предстоит сделать выбор – доверяете вы источнику или нет.

image016 Рисунок 14 – Оповещение системы безопасности

Заключение

Мы рассмотрели базовые вопросы, касающиеся работы с макросами в приложениях Microsoft Office 2010. На основе полученных сведений вы сможете начать работу над своими скриптами автоматизации и упрощения работы. Также можете подписаться на обновления блога по категории VBA – в планах есть несколько статей, касающихся вопросам «офисной» разработки.

Содержание

  • VBA PDF (бесплатные загрузки)
  • Примеры Word VBA «Шпаргалка»
  • Учебное пособие по макросам Word VBA
  • Пример простого макроса Word
  • Объект документа Word
  • Документы
  • Диапазон, выделение, абзацы
  • Примеры макросов Word

Добро пожаловать в наше мега-руководство по Word VBA / макросам!

Эта страница содержит:

    1. Учебное пособие по Word VBA в формате PDF (бесплатная загрузка)
    2. Word VBA «Шпаргалка», содержащая список наиболее часто используемых фрагментов кода Word VBA.
    3. Полное руководство по Word VBA / Macro.
    4. Список всех наших руководств по макросам Word VBA с возможностью поиска

Возможно, вас заинтересует наше интерактивное руководство по VBA для Excel. Хотя некоторые из примеров / упражнений относятся к Excel VBA, большая часть содержимого является общим для всех VBA, и вам может быть полезно изучить такие концепции, как If, Loops, MessageBoxes и т. Д.

VBA PDF (бесплатные загрузки)

Загрузите наше бесплатное руководство по Microsoft Word VBA! Или учебники VBA для других программ Office!

Скачать

Ниже вы найдете простые примеры кода VBA для работы с Microsoft Word.

Выбрать / перейти к

ОписаниеКод VBABackspaceSelection.TypeBackspaceВыбрать весь документSelection.HomeKey Unit: = wdStory
Selection.ExtendКопироватьSelection.CopyУдалитьSelection.Delete Unit: = wdCharacter, Count: = 1Вставить послеSelection.InsertAfter «текст»Начало строкиSelection.HomeKey Unit: = wdLineКонец линииSelection.EndKey Unit: = wdLineВставитьSelection.PasteВыбрать всеSelection.WholeStoryВыбрать всю строкуSelection.EndKey Unit: = wdLine, Extend: = wdExtendВверх по абзацуSelection.MoveUp Unit: = wdParagraph, Count: = 1Переместить вправо на один символSelection.MoveRight Unit: = wdCharacter, Count: = 1Переместить вправо на одну ячейку в таблицеSelection.MoveRight Unit: = wdCellПерейти к началу документаSelection.HomeKey Unit: = wdStoryПерейти в конец документаSelection.EndKey Unit: = wdStoryПерейти на страницу 1Selection.GoTo What: = wdGoToPage, Which: = wdGoToNext, Name: = ”1 ″Перейти к началу страницыSelection.GoTo What: = wdGoToBookmark, Name: = ” Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Return to Top

Закладки

ОписаниеКод VBAДобавлятьС ActiveDocument.Bookmarks
.Add Range: = Selection.Range, Name: = «Name».
.DefaultSorting = wdSortByName
.ShowHidden = Ложь
Конец сСчитатьDim n as Integer
n = ActiveDocument.Bookmarks.CountУдалитьActiveDocument.Bookmarks («Имя закладки»). УдалитьСуществуют?Если ActiveDocument.Bookmarks.Exists («BookmarkName») = True, то
‘Сделай что-нибудь
Конец, еслиПерейти кSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”ВыбиратьActiveDocument.Bookmarks («Имя закладки»). ВыберитеЗаменить текстSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter «Новый текст»
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Name: = ”BookmarkName”

Return to Top

Документ

ОписаниеКод VBAАктивироватьДокументы («Example.doc»). АктивироватьДобавить в переменнуюDim doc As Document
Установить doc = Documents.AddДобавлятьDocuments.AddДобавить (из другого документа)Documents.Add Template: = ”C: Forms FormDoc.doc”, _
NewTemplate: = FalseЗакрыватьДокументы («Example.doc»). ЗакрытьЗакрыть — сохранить измененияДокументы («Example.doc»). Закройте SaveChanges: = wdSaveChangesЗакрыть — не сохранятьДокументы («Example.doc»). Закройте SaveChanges: = wdDoNotSaveChanges.Закрыть — запрос на сохранениеДокументы («Example.doc»). Закройте SaveChanges: = wdPromptToSaveChanges.

Return to Top

Столбцы

ОписаниеКод VBAСохранить какДокументы («Example.doc»). SaveAs («C: Example Example.doc»)СохранитьДокументы («Example.doc»). СохранитьЗащищатьДокументы («Example.doc»). Защитить пароль: = «пароль»Снять защитуДокументы («Example.doc»). Снять пароль: = «пароль»Число страницDim varNumberPages как вариант
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)РаспечататьДокументы («Example.doc»). Распечатать

Return to Top

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Шрифт

ОписаниеКод VBAРазмерSelection.Font.Size = 12ЖирныйSelection.Font.Bold = TrueКурсивSelection.Font.Italic = TrueПодчеркиваниеSelection.Font.Underline = wdUnderlineSingleВсе заглавные буквыSelection.Font.AllCaps = TrueЦветSelection.Font.TextColor = vbRedИмяSelection.Font.Name = «Абади»Нижний индексSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueЦвет выделенияSelection.Range.HighlightColorIndex = wdYellowСтильSelection.Style = ActiveDocument.Styles («Нормальный»)

Return to Top

Вставлять

ОписаниеКод VBAВставить автотекстSelection.TypeText Текст: = ”a3 ″
Selection.Range.InsertAutoTextВставить код датыВставить файлSelection.InsertFile («C: Docs Something.doc»)Вставить разрыв страницыSelection.InsertBreak Тип: = wdPageBreakВставить символ абзацаSelection.TypeText Text: = Chr $ (182)Вставить вкладкуSelection.TypeText Текст: = vbTabВставить текстSelection.TypeText Text: = «Любой текст»Вставить абзац типаSelection.TypeParagraphВставить абзацSelection.InsertParagraph

Return to Top

Петли

ОписаниеКод VBAСделать до конца документаСделать до ActiveDocument.Bookmarks (« Sel») = ActiveDocument.Bookmarks (« EndOfDoc»)
‘Сделай что-нибудь
SubДля каждого документа в ДокументахDim doc As Document
Для каждого документа в документах
‘Сделай что-нибудь
Следующий документЦикл по абзацамПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Пункт

ОписаниеКод VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = ИстинаПробел послеSelection.ParagraphFormat.SpaceAfter = 12Пространство доSelection.ParagraphFormat.SpaceBefore = 0Выровнять по центруSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterВыровнять по правому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphRightВыровнять по левому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftЛевый отступSelection.ParagraphFormat.LeftIndent = InchesToPoints (3,75)Правый отступSelection.ParagraphFormat.RightIndent = InchesToPoints (1)Межстрочный интервалС Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Конец сПеребрать все абзацыПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Учебное пособие по макросам Word VBA

Это руководство по использованию VBA с Microsoft Word. Это руководство научит вас писать простой макрос и взаимодействовать с документами, диапазонами, выделениями и абзацами.

Примечание. Если вы новичок в Macros / VBA, вам также может быть полезна эта статья: Как писать макросы VBA с нуля.

VBA — это язык программирования, используемый для автоматизации программ Microsoft Office, включая Word, Excel, Outlook, PowerPoint и Access.

Макросы представляют собой блоки кода VBA, которые выполняют определенные задачи.

Когда ты Записать макрос, Word запишет код VBA в макрос, что позволит вам повторять ваши действия. Вы можете увидеть список всех доступных макросов из Просмотр> Макросы.

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

Когда вы нажимаете Редактировать, вы открываете Редактор VBA. Используя редактор VBA, вы можете редактировать записанные макросы или писать макрос Word с нуля. Для доступа к редактору VBA используйте ярлык ALT + F11 или щелкните Visual Basic от Лента разработчика.

Пример простого макроса Word

Это простой пример макроса Word VBA. Он выполняет следующие задачи:

  • Открывает документ Word
  • Записывает в документ
  • Закрывает и сохраняет документ Word.
123456789101112131415 Sub WordMacroExample ()’Открыть документ и назначить переменнойDim oDoc как документУстановите oDoc = Documents.Open («c: Users something NewDocument.docx»).’Написать в документSelection.TypeText «www.automateexcel.com»Selection.TypeParagraph’Сохранить и закрыть документoDoc.SaveoDoc.CloseКонец подписки

Основы работы с макросами Word

Весь код VBA должен храниться в подобных процедурах. Чтобы создать процедуру в VBA, введите «Sub WordMacroExample» (где «WordMacroExample» — желаемое имя макроса) и нажмите ВХОДИТЬ. VBA автоматически добавит круглые скобки и End Sub.

Объект документа Word

При взаимодействии с Microsoft Word в VBA вы часто будете ссылаться на Word «Объекты». Наиболее распространенные объекты:

Объект приложения — сам Microsoft Word

Объект документа — документ Word

Объект диапазона — Часть документа Word

Объект выделения — Выбранный диапазон или положение курсора.

заявка

Приложение — это объект «верхнего уровня». Через него можно получить доступ ко всем остальным объектам Word.

Помимо доступа к другим объектам Word, можно применить настройки «уровня приложения»:

1 Application.Options.AllowDragAndDrop = True

Это пример доступа к «Выборке» в «Windows (1)» в Приложении:

1 Application.Windows (1) .Selection.Characters.Count

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

1 Selection.Characters.Count

Документы

ActiveDocument

Часто у вас есть два или более документов, открытых в Word, и вам нужно указать, с каким конкретным документом Word следует взаимодействовать. Один из способов указать, какой документ использовать ActiveDocument. Например:

1 ActiveDocument.PrintOut

… Напечатал бы ActiveDocument. ActiveDocument — это документ в Word, который «имеет фокус»

Чтобы переключить ActiveDocument, используйте команду Activate:

1 Документы («Example.docx»). Активировать

Этот документ

Вместо использования ActiveDocument для ссылки на активный документ вы можете использовать ThisDocument для ссылки на документ, в котором хранится макрос. Этот документ никогда не изменится.

Переменные документа

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

Вместо этого вы можете использовать переменные документа.

Этот макрос назначит ActiveDocument переменной, а затем распечатает документ, используя переменную:

12345 Sub VarExample ()Dim oDoc как документУстановите oDoc = ActiveDocumentoDoc.PrintOutКонец подписки

Документ Методы

Открыть документ

Чтобы открыть документ Word:

1 Documents.Open «c: Users SomeOne Desktop Test PM.docx»

Мы рекомендуем всегда назначать документ переменной при его открытии:

12 Dim oDoc как документУстановите oDoc = Documents.Open («c: Users SomeOne Desktop Test PM.docx»).

Создать новый документ

Чтобы создать новый документ Word:

Мы можем указать Word создать новый документ на основе некоторого шаблона:

1 Documents.Add Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»

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

12 Dim oDoc как документУстановите oDoc = Documents.Add (Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»)

Сохранить документ

Чтобы сохранить документ:

или Сохранить как:

1 ActiveDocument.SaveAs FileName: = c: Users SomeOne Desktop test2.docx «, FileFormat: = wdFormatDocument

Закрыть документ

Чтобы закрыть документ и сохранить изменения:

1 ActiveDocument.Close wdSaveChanges

или без сохранения изменений:

1 ActiveDocument.Close wdDoNotSaveChanges

Распечатать документ

Это напечатает активный документ:

1 ActiveDocument.PrintOut

Диапазон, выделение, абзацы

Диапазон а также Выбор являются, вероятно, наиболее важными объектами в Word VBA и, безусловно, наиболее часто используемыми.

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

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

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

Диапазон

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

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Content

или он может быть маленьким, как один символ.

Другой пример, этот диапазон будет относиться к первому слову в документе:

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Range.Words (1)

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

В следующем примере мы выделим первое слово второго абзаца жирным шрифтом:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True

Установить текст диапазона

Чтобы установить текстовое значение диапазона:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = «Привет»

(Совет: обратите внимание на пробел после «Hello». Поскольку слово «объект» включает пробел после слова, просто «hello» мы получим «Hellonext word»)

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

Изменить шрифт

1 oRange.Font.Name = «Arial»

Отображение в окне сообщения количества символов в определенном диапазоне

1 MsgBox oRange.Characters.Count

Вставьте текст перед ним

1 oRange.InsertBefore «это вставленный текст»

Добавить сноску к диапазону

12 ActiveDocument.Footnotes.Add Диапазон: = oRange, _Text: = «Подробнее читайте на easyexcel.net.»

Скопируйте в буфер обмена

1234 oRange.CopyЧасто вам нужно перейти к конкретному диапазону. Итак, вы можете начать, начать и закончитьoRange.Start = 5oRange.End = 50

После приведенного выше кода oRange будет относиться к тексту, начинающемуся с пятого и заканчивающемуся 50-м символом в документе.

Выбор

Выбор используется даже шире, чем Диапазон, потому что с ним легче работать Выборы чем Диапазоны, ЕСЛИ ваш макрос взаимодействует ТОЛЬКО с ActiveDocument.

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

1 ActiveDocument.Paragraphs (2) .Range.Select

Затем вы можете использовать объект выбора для ввода текста:

1 Selection.TypeText «Какой-то текст»

Мы можем ввести несколько абзацев ниже «Некоторый текст»:

12 Selection.TypeText «Какой-то текст»Selection.TypeParagraph

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

12345 Если Selection.Type wdSelectionIP ТогдаSelection.Font.Bold = TrueЕщеMsgBox «Вам нужно выделить текст».Конец, если

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

Начало документа:

1 Selection.HomeKey Unit: = wdStory, Extend: = wdMove

Начало текущей строки:

1 Selection.HomeKey Unit: = wdLine, Extend: = wdMove

Параметр Extend wdMove перемещает точку вставки. Вместо этого вы можете использовать wdExtend, который выделит весь текст между текущей точкой вставки.

1 Selection.HomeKey Unit: = wdLine, Extend: = wdExtend

Переместить выделение

Самый полезный метод изменения положения точки вставки — «Перемещение». Чтобы переместить выделение на два символа вперед:

1 Selection.Move Unit: = wdCharacter, Count: = 2

чтобы переместить его назад, используйте отрицательное число для параметра Count:

1 Selection.Move Unit: = wdCharacter, Count: = — 2

Параметр единицы измерения может быть wdCharacter, wdWord, wdLine или другим (используйте справку Word VBA, чтобы увидеть другие).

Чтобы вместо этого переместить слова:

1 Selection.Move unit: = wdWord, Count: = 2

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

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

1 Установите oRange = Selection.Range.

СОВЕТ: Использование Выбор часто проще, чем использование диапазонов, но также и медленнее (важно, когда вы имеете дело с большими документами)

Абзацы

Вы не можете напрямую использовать объект Paragraphs для изменения текста:

1 ActiveDocument.Paragraphs (1) .Text = «Нет, это не сработает»

Выше не сработает (на самом деле выдаст ошибку). Вам нужно сначала получить диапазон, связанный с конкретным абзацем:

1 ActiveDocument.Paragraphs (1) .Range.Text = «Теперь работает :)»

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

1 ActiveDocument.Paragraphs (1) .Style = «Нормальный»

или измените форматирование на уровне абзаца:

1 ActiveDocument.Paragraphs (1) .LeftIndent = 10

или, может быть, вы хотите сохранить этот абзац на одной строке со следующим абзацем:

1 ActiveDocument.Paragraphs (1) .KeepWithNext = True

Сделайте абзац по центру:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

ОЧЕНЬ полезно назначить конкретный абзац объектной переменной. Если мы присвоим переменной конкретный абзац, нам не нужно беспокоиться, станет ли первый абзац вторым, потому что мы вставили перед ним один абзац:

12 dim oPara как абзацУстановите oPara = Selection.Paragraphs (1) ‘здесь мы присваиваем первый абзац текущего выделения переменной

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

1234567 Sub ParagraphExample ()Dim oPara как абзацУстановить oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore ‘Вставить абзацMsgBox oPara.Range.TextКонец подписки

Объект абзаца очень часто используется в циклах:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara как абзацДля каждого параметра в ActiveDocument.Paragraphs«Сделай что-нибудь с этим. Мы просто покажем’текст абзаца, если его стиль — «Заголовок 4″Если oPara.Style = «Заголовок 4», тоMsgBox oPara.Range.TextКонец, еслиДалее oParaКонец подписки

Word VBA Tutorial Заключение

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

Примеры макросов Word

Примеры макросов Word
Шаблоны
Добавить новые документы
Подсчет слов в выделенном фрагменте
Текстовые поля
Сохранить как PDF
Закладки
Таблицы
Найти, найти и заменить
Открытые документы

Word VBA: часто задаваемые вопросы

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

Макрос — это общий термин, обозначающий набор инструкций по программированию, которые автоматизируют задачи. Макросы Word автоматизируют задачи в Word с помощью языка программирования VBA.

Есть ли в слове VBA?

Да, в Microsoft Word есть редактор VBA. Доступ к нему можно получить, нажав клавиши ALT + F11 или перейдя в раздел «Разработчик»> «Visual Basic».

Как использовать VBA в Word?

1. Откройте редактор VBA (ALT + F11 или Разработчик> Visual Basic).
2. Выберите «Вставить»> «Модуль», чтобы создать модуль кода.
3. Введите «Sub HelloWorld» и нажмите Enter.
4. Между строками «Sub HelloWorld» и «End Sub» введите «MsgBox« Hello World! »
5. Вы создали макрос!
6. Теперь нажмите «F5», чтобы запустить макрос.

Если у Вас возник вопрос «Как использовать макрорекордер для записи макроса в Word?» то эта статья для Вашего внимания. Здесь как раз поочередно рассматривается процесс запуска макрорекордера и записи макросов в различных версиях Word. Для лучшего понимания того, что будет происходить, определим задачу — записать макрос, который будет выделять весь текст документа.

Microsoft Word 2003
Запускаем приложение, открываем в нем текстовый файл, заходим в главное меню Сервис/Макрос и выбираем пункт «Начать запись…»

1

Выбираем пункт меню «Начать запись» и в появившемся окне «Запись макроса», выбираем имя будущему макросу (я оставлю то имя, которое ему присвоено по умолчанию «Макрос1») и место его хранения. Местом хранения может быть сам файл документа, а может быть глобальный шаблон Normal.dot, аналог личной книги макросов Personal.xls, которая есть в Excel. При необходимости присваиваем будущему макросу сочетание горячих клавиш, при нажатии которых будет происходить выполнение (запуск) макроса. В этом примере не будем присваивать макросу никаких сочетаний клавиш, поле с описанием оставим без изменений и местом для сохранения выберем файл Normal.dot. Идем дальше, нажимаем кнопку ОК.

2

Макрорекордер включен, началась запись всех наших действий и одновременный их перевод на язык программирования Visual Basic for Application, сокращенно VBA. В начале этой статьи мы задались целью записать макрос, выделяющий всю текстовую область, поэтому нашим действием будет выделение текста в открытом файле. Для этого можно зайти в главное меню «Правка» и выбрать там пункт «Выделить все», а можно тоже самое сделать нажатием сочетания горячих клавиш Ctrl+A. Прекращаем запись нажатием кнопки «Остановить запись», для этого переходим туда же, откуда эту запись начинали, то есть в меню Сервис/Макрос.

3

Ну вот и все! Наш макрос записан. Осталось только убедиться, что он работает и посмотреть как он выглядит (если кому интересно). Перед выполнением макроса снимем выделение с текста, или откроем новый текстовый файл, зайдем в меню Сервис/Макрос/Макросы либо нажмем сочетание клавиш Alt+F8 (это сочетание актуально для всех приложений любых версий), выберем из списка макрос с нашим названием «Макрос1» и нажмем кнопку «Выполнить». Хочу обратить Ваше внимание на то, что с помощью этого окна можно не только запустить макрос, также можно удалить, изменить программный код и внести изменения в описание.

4

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

Чтобы просмотреть записанный нами макрос в виде программного кода, нужно запустить редактор Visual Basic через меню Сервис/Макрос/Редактор Visual Basic, либо нажатием сочетания клавиш Alt+F11 (это сочетание тоже актуально во всех версиях всех приложений). В открывшемся окне редактора видим проект Normal и в этом проекте новый модуль Module1, в котором и сохранен программный код нашего макроса.

5

Microsoft Word 2007
В окне приложения MS Word 2007 кнопку «Начать запись…» можно отыскать сразу в нескольких местах. Во-первых, это левый нижний угол экрана, как показано на рисунке ниже

6

Во-вторых, на ленте главного меню, на вкладке «Вид»

7

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

8

Во время записи кнопка «Запись макроса» изменяет свое назначение на «Остановить запись» а также становится активной кнопка «Пауза», приостанавливающая запись макроса.

9

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

Microsoft Word 2010
Если Вы перешли на приложения пакета MS Office 2010 после версии 2007, то кнопки «Запись макроса» и «Остановить запись» в версии Word 2010 будут расположены в привычных уже местах. Нахождение этих кнопок идентично предыдущей версии текстового редактора — это все тот же левый нижний угол экрана и две вкладки на ленте — «Вид» и «Разработчик» (подробнее о них написано в предыдущем разделе Microsoft Word 2007).

10

Сам процесс записи, просмотра и выполнения записанного макроса также полностью повторяет предыдущую версию. После установки офисного пакета 2010, я обнаружил, что по умолчанию редактор Visual Basic отсутствует, пришлось шагнуть назад и доустановить этот недостающий компонент. Называется он «Visual Basic для приложений» и находится в отдельном компоненте пакета под названием «Общие средства Office», так что не пугайтесь, если кнопка записи при первом на нее нажатии никак не среагировала на Ваши действия. Если же запись прошла успешно, но возникла проблема при запуске макроса, то скорее всего это связано с настройками системы безопасности.

Источник.

Like this post? Please share to your friends:
  • Vba for word 2007
  • Vba procedures in excel
  • Vba for vlookup in excel
  • Vba print from excel
  • Vba powerpoint and excel