Макросы word абзац это

Содержание

  • 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 есть очень полезная функция «Найти и заменить« (вызывается через сочетание клавиш Ctrl+H или меню «Правка» -> «Заменить…»), которой, к сожалению, пользуются не так часто. Но еще реже используют данную функцию в режиме «Подстановочные знаки«.

Галочка "подстановочные знаки" (макросы)

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

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

Макросы — это такие полезные штуки, которые позволяют автоматизировать часто выполняемые операции (в случае примера на видео, это форматирование текста). О способах записи и создания макросов можно найти тысячи статей на просторах Интернета. Нас же будет интересовать вариант, при котором макрос записывается вручную во встроенном в Word редакторе Visual Basic. Суть использования макросов мною основана на принципе конструктора: макрос состоит из набора кирпичиков-функций, которые заранее прописаны и могут размещаться в любой требуемой последовательности. Каждая же из функций является действием, либо набором действий, она имеет свое уникальное имя. В макросе же надо лишь указать имя функции для ее вызова.

Макросы — практика

Показать скрытое содержание
Function Tire()
‘заменяет дефис в начале абзаца на тире
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «^p- »
.Replacement.Text = «^p^= »
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Function
Function Tire2()
‘заменяет дефис окруженный пробелами на тире
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = » — »
.Replacement.Text = » ^= »
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Function
Function Defis()
‘заменяет тире в начале абзаца на дефис
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «^p^=»
.Replacement.Text = «^p-»
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Function
Function Prob()
‘заменяет множественные пробелы на одиночный
‘удаляет множественные и одиночные пробелы в начале абзаца
‘удаляет множественные и одиночные пробелы в конце абзаца
‘удаляет знаки абзаца идущие до текста в начале документа
‘и знаки абзаца идущие после текста в конце документа
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.MatchWildcards = False
.Execute «^w», , , , , 0, , , 0, » «, 2
.Execute «^p^w», , , , 0, , , , 0, «^p», 2
.Execute «^w^p», , , , 0, , , , 0, «^p», 2
End With
If ActiveDocument.Paragraphs.Count > 1 Then
Do While ActiveDocument.Paragraphs.Last.Range.Text = Chr(13) And _
ActiveDocument.Paragraphs.Count > 1
ActiveDocument.Paragraphs.Last.Range.Delete
Loop
End If
Selection.HomeKey wdStory
While Selection.Paragraphs.First.Range.Characters.Count = 1
Selection.Paragraphs.First.Range.Delete
Wend
End Function
Function Format()
‘весь текст делает 14 размером TimesNewRoman
‘с 1,5 интервалом и выравнивает его по ширине
ActiveDocument.Content.Font.Name = «Times New Roman»
ActiveDocument.Content.Font.Size = 14
ActiveDocument.Content.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
ActiveDocument.Content.ParagraphFormat.Alignment = wdAlignParagraphJustify
Selection.HomeKey wdStory
End Function
Function Format2()
‘весь текст делает 11 размером Arial
‘с 1,5 интервалом и выравнивает его по ширине
ActiveDocument.Content.Font.Name = «Arial»
ActiveDocument.Content.Font.Size = 11
ActiveDocument.Content.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
ActiveDocument.Content.ParagraphFormat.Alignment = wdAlignParagraphJustify
Selection.HomeKey wdStory
End Function
Function Zagol()
‘делает заголовок (первый абзац) документа жирным
‘и выравнивает его по центру
ActiveDocument.Paragraphs(1).Range.Select
Selection.Font.Bold = True
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.HomeKey wdStory
End Function
Function Symb()
‘Подсчитывает количество символов в документе
‘и выводит сообщение
spacecount = ActiveDocument.Content.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces)
MsgBox «В тексте содержится символов (включая пробелы) — » & spacecount & » »
End Function
Function Krasn()
‘Делает красный шрифт у выделенного слова
Selection.Font.Color = wdColorRed
End Function
Function Intjyr()
‘Выделяет жирным все вопросы «И:»
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «(^0013^0013И:)(*)(^0013)»
.MatchWildcards = True
.Forward = True
.Replacement.Text = «123″
.Replacement.Font.Bold = True
.Execute Replace:=wdReplaceAll
End With
End Function
Function One_to_Two()
‘Разделяет одно предложение на два (перед выполнением курсор ставить после запятой)
Selection.TypeBackspace
Selection.TypeText Text:=».»
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.Range.Case = wdTitleSentence
End Function
Function Two_to_One()
‘Склеивает два предложения в одно (перед выполнением курсор ставить после точки)
Selection.TypeBackspace
Selection.TypeText Text:=»,»
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.Range.Case = wdTitleSentence
End Function
Function Nimerstr()
‘Вставляет нумерацию страниц справа вверху
Selection.Sections(1).Headers(1).PageNumbers.Add PageNumberAlignment:= _
wdAlignPageNumberRight, FirstPage:=True
End Function
Function MastifTime()
‘Находит и заменяет тайм-коды в обычном формате (чч:мм:сс), на формат
‘требуемый для Мастифа (чч-мм-сс)
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «(^0013)(([0-9]@:[0-9]@:[0-9]@))»
.MatchWildcards = True
.Forward = True
.Replacement.Text = «12»
.Execute Replace:=wdReplaceAll
End With
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «:([0-9]@):»
.MatchWildcards = True
.Forward = True
.Replacement.Text = «-1-»
.Execute Replace:=wdReplaceAll
End With
End Function
Function Troetoch()
‘Заменяет три точки идущие подряд на знак троеточия
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «…»
.Replacement.Text = «…»
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Function
Function Tehnik()
‘Ищет в тексте технические надписи в скобках
‘если они прописаны без точки, то перед закрывающей скобкой ставится точка,
‘если они написаны (случайно) не курсивом, то выделяются им
Dim MyCollection As New Collection
With MyCollection
.Add («Аплодисменты»)
.Add («Говорят одновременно»)
.Add («Дефект записи»)
.Add («Дефект звука»)
.Add («Смена кадра»)
.Add («Обрыв записи»)
.Add («Техническая съемка»)
.Add («Техническая реплика»)
.Add («Технический разговор»)
.Add («Конец просмотра видеоролика»)
.Add («Начало просмотра видеоролика»)
.Add («Просмотр видеоролика»)
.Add («Возобновление тайм-кода»)
.Add («Остановка тайм-кода»)
.Add («Смена тайм-кода»)
.Add («Смех»)
.Add («Смеется»)
.Add («Кашель»)
.Add («Кашляет»)
End With
Dim i As Integer
For i = 1 To MyCollection.Count
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «((» & MyCollection.Item(i) & «))»
.MatchWildcards = True
.Forward = True
.Replacement.Text = «(1.)»
.Replacement.Font.Italic = True
.Execute Replace:=wdReplaceAll
End With
ActiveDocument.Content.Find.ClearFormatting
ActiveDocument.Content.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.Text = «((» & MyCollection.Item(i) & «.))»
.MatchWildcards = True
.Forward = True
.Replacement.Text = «(1)»
.Replacement.Font.Italic = True
.Execute Replace:=wdReplaceAll
End With
Next i
End Function
Sub Zamena()
‘ Комплекс последовательных функций при форматировании работ всех видов кроме Первого канала.
Prob
Tire2
Tire
Troetoch
Nimerstr
Tehnik
Symb
End Function
Sub Zamena2()
‘ Комплекс последовательных функций при форматировании работ Первого канала.
Prob
Defis
Tire2
Troetoch
Nimerstr
Tehnik
Symb
End Function
Sub ФОРМАТ()
Format
Prob
Tire2
Tire
Troetoch
Intjyr
Tehnik
Nimerstr
Zagol
Symb
End Sub
Sub МАСТИФ()
Format2
Prob
Intjyr
Tehnik
MastifTime
Nimerstr
Zagol
Symb
End Sub

Прописав это и сохранив в шаблоне «Normal.dot« можно получить доступ к этим макросам из любого документа. Вызывается окно выбора макросов горячей клавишей Alt+F8.

Я предпочитаю использовать кнопки на панели инструментов. Поместить на нее кнопку и привязать к ней макрос очень легко. Об этом доступно написано в данной статье.

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

zics

1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

1

Как создать абзац и добавить в него текст

17.11.2018, 00:46. Показов 3993. Ответов 28

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Коллеги, прошу прощения, только осваиваю особенности программного управления документом Word. Тривиальная, казалось бы, задача: вставить в закладку текст, добавить новый абзац и в него впечатать новый текст, но…
Текст в закладку вставляется на-ура, а вот дальше:
выделяю закладку, но новый абзац не создается, текст тоже вставляться не хочет (завершение выполнения с ошибкой). В чем причина?
Код работает из-под Excel, библиотека Word подключена

Visual Basic
1
2
3
4
oDoc.Bookmarks("Закладка1").Range.Text="Hello Planet"
oDoc.Bookmarks("Закладка1").Select
Selection.TypeParagraph
Selection.Text = "Hello World"



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

17.11.2018, 09:22

2

Цитата
Сообщение от zics
Посмотреть сообщение

Код работает из-под Excel

Поэтому objWord.Selection



1



zics

1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

17.11.2018, 11:27

 [ТС]

3

Спасибо. Я думал, проблема не должна возникать, когда подключена библиотека Microsoft Word 11.0 Object Library, а приложение Word уже загружено до запуска кода. Далее макрос открывает нужный файл Word и делает в нём всё необходимое.

PureBasic
1
2
Dim myWordDoc As Document
Set myWordDoc = Documents.Open("C:Doc1.docx")



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

17.11.2018, 13:19

4

zics, если работаешь с вордом извне, то следует отказаться от использования Selection и везде использовать Range. В 95% случаев этого достаточно.
Ну и помнить, что в Excel тоже есть Range, поэтому обращаться через пространство имён.

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



1



1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

18.11.2018, 20:20

 [ТС]

5

Все попытки использовать TypeParagraph и TypeText ни к чему не привели.
Если не сложно, подскажите вариант кода, как реализовать простую, казалось бы, задачу:
1. Вставить в закладку документа Word текст (это удается без проблем)
2. Добавить новый пустой абзац после введенного текста на шаге 1
3. Добавить в этот абзац текст.

Как это сделать без Selection, а используя только Range?

Макрос запускается из Экселя.



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.11.2018, 20:51

6

zics, проще всего сделать это одной вставкой

Visual Basic
1
oDoc.Bookmarks("Закладка1").Range.Text = "Hello Planet" & vbCr & "Hello World"

Ну или

Visual Basic
1
2
3
4
5
  With oDoc.Bookmarks("Закладка1").Range
    .InsertAfter "Hello Planet"
    .InsertParagraphAfter
    .InsertAfter "Hello World"
  End With



1



zics

1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

18.11.2018, 21:30

 [ТС]

7

Реализовал предложенную ViterAlex идею, сработало! Вероятно, реализация не самая оптимальная. Буду рад, если кто-нибудь предложит альтернативу

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Dim objWrdApp As Object, objWrdDoc As Object   
Set objWrdApp = CreateObject("Word.Application")
Set objWrdDoc = objWrdApp.Documents.Add("C:doc1.dotx", False)
objWrdDoc.Bookmarks("Закладка 1").Range.Text = "Текст 1"
Set myRange = objWrdDoc.Bookmarks("Закладка 1").Range
myRange.Expand Unit:=wdParagraph
myRange.Collapse Direction:=wdCollapseEnd
myRange.InsertParagraph
myRange.Text = "Текст 2"
objWrdApp.Quit
Set objWrdDoc = Nothing: Set objWrdApp = Nothing

Добавлено через 9 минут

Цитата
Сообщение от Казанский
Посмотреть сообщение

Ну или

Спасибо за предложенные варианты! А если усложнить задачу и после «Hello Planet» в новый абзац вставить таблицу, а после неё уже «Hello World», сработает?



0



ViterAlex

8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

18.11.2018, 22:05

8

Цитата
Сообщение от zics
Посмотреть сообщение

А если усложнить задачу и после «Hello Planet» в новый абзац вставить таблицу, а после неё уже «Hello World», сработает?

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

Visual Basic
1
2
3
Dim tbl As Table
Set tbl = myrange.Document.Tables.Add(myrange, 3, 4)
tbl.Range.InsertParagraphAfter()

Примерно так



1



1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

18.11.2018, 23:18

 [ТС]

9

Цитата
Сообщение от ViterAlex
Посмотреть сообщение

Set tbl = myrange.Document.Tables.Add(myrange, 3, 4)

А если мне нужно не новую пустую таблицу создать, а вставить её, например, методом PasteExcelTable, и после её вставки добавлять новые абзацы и наполнять их текстом?



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

18.11.2018, 23:29

10

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



1



zics

1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

19.11.2018, 16:28

 [ТС]

11

Пока так и не смог реализовать задачу, даже при активной помощи (спасибо им большое) знатоков.
Задача: Макрос, который запускается из Excel, должен в закладку имеющегося файла Word впечатать несколько строк текста, подгружать рисунок, вставлять таблицу (всё с нового абзаца), и так в цикле несколько раз. Все данные (текст, таблица) берутся из Excel, рисунок — из папки.

Visual Basic
1
2
3
4
5
6
7
8
 set MyRange=oDoc.Bookmarks("Закладка1").Range
  With MyRange
    .InsertAfter "Hello Planet"
    .InsertParagraphAfter
    .InsertAfter "Hello World"
    .InsertParagraphAfter    
    .Next(Unit:=wdParagraph, Count:=1).PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
 End With

Проблема в том, что вставленная таблица выходит за пределы MyRange, что не позволяет после таблицы добавлять новые строки текста.

Добавлено через 6 минут
т

Цитата
Сообщение от zics
Посмотреть сообщение

Проблема в том, что вставленная таблица выходит за пределы MyRange, что не позволяет после таблицы добавлять новые строки текста.

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

Добавлено через 2 минуты
А если кто-нибудь посоветует источник, где расписаны основные моменты работы с VBA Word, буду признателен



0



Модератор

Эксперт MS Access

11342 / 4661 / 748

Регистрация: 07.08.2010

Сообщений: 13,508

Записей в блоге: 4

19.11.2018, 18:03

12

Цитата
Сообщение от zics
Посмотреть сообщение

и так в цикле несколько раз

меня более заинтересовала эта фраза— видимо у вас большой ворд-отчет с несколькими рисунками, таблицами, гладким текстом



0



1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

19.11.2018, 18:22

 [ТС]

13

Цитата
Сообщение от shanemac51
Посмотреть сообщение

видимо у вас большой ворд-отчет с несколькими рисунками, таблицами, гладким текстом

всё верно, угадали. Хочу научить Excel самостоятельно создавать отчеты в Word. Споткнулся на таблицах, прошу помощь зала

Добавлено через 3 минуты

Цитата
Сообщение от zics
Посмотреть сообщение

помощь зала

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



0



Модератор

Эксперт MS Access

11342 / 4661 / 748

Регистрация: 07.08.2010

Сообщений: 13,508

Записей в блоге: 4

19.11.2018, 18:51

14

Цитата
Сообщение от zics
Посмотреть сообщение

еще и в одну закладку — проблема

а я как-то приладилась формировать НТМ-отчеты программно формировать(90-95%) ото всюду(ексель,аксесс, фохпро,…), обычно использую стандартные теги(30-40), без наворотов

со временем накопились стандартные куски кода для формирования СОГЛАСОВАНО/УТВЕРЖДАЮ, подписей…..

удобно
—можно просто смотреть в броузере
—хорошо открывается в ворде для печати(автоподбор таблиц по ширине окна, альбомная/книжная), при необходимости пересохраняю в ДОС/ДОСХ-формат
—да и ексель с небольшой руганью открывает



1



1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

19.11.2018, 18:59

 [ТС]

15

Цитата
Сообщение от shanemac51
Посмотреть сообщение

меня более заинтересовала эта фраза— видимо у вас большой ворд-отчет с несколькими рисунками, таблицами, гладким текстом

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



0



Модератор

Эксперт MS Access

11342 / 4661 / 748

Регистрация: 07.08.2010

Сообщений: 13,508

Записей в блоге: 4

19.11.2018, 19:09

16

Цитата
Сообщение от zics
Посмотреть сообщение

Интересно, но пока не вижу преимуществ данного подхода

каждый подстраивается под свой уровень ЛЕНИ
лично мне лень форматировать ворд-шаблон, расставлять закладки в нем
потом в аксесс/ексель писать код для заполнения сих закладок, при этом ломая голову над вставкой таблиц/рисунков

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

закладки(вернее замены через найти /заменить) применяю в более художественных шаблонах, слияние применила видимо 1 -2 раза в самом начале работы с ворд-шаблонами, затем перешла на замены



0



1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

19.11.2018, 19:12

 [ТС]

17

Цитата
Сообщение от shanemac51
Посмотреть сообщение

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

Наверное, это подход профессионала, а нам, фактически, пользователям, остаётся что попроще…



0



Модератор

Эксперт MS Access

11342 / 4661 / 748

Регистрация: 07.08.2010

Сообщений: 13,508

Записей в блоге: 4

19.11.2018, 19:16

18

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

п.с.
хотелось бы посмотреть на ваш шаблон с местами установки рисунков и таблиц



0



zics

1 / 1 / 0

Регистрация: 15.11.2018

Сообщений: 35

19.11.2018, 19:35

 [ТС]

19

Вероятно, но подожду, может, кто из знатоков откликнется

Добавлено через 11 минут
Шаблона как такового нет пока еще, есть документ Word с одной единственной закладкой, куда из Excel подгружается текст из разных полей. Всё здорово, пока не доходит очередь до таблицы, которая не хочет вставляться в MyRange

PureBasic
1
MyRange=oDoc.Bookmarks("Закладка1").Range

А, значит, не могу получить ссылку на таблицу для её форматирования, а, главное, не могу добавить новые строки с текстом после таблицы. Вероятно, что после вставки таблицы методом

PureBasic
1
.Next(Unit:=wdParagraph, Count:=1).PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False

надо как-то раздвинуть MyRange, чтобы захватить таблицу. А дальше по накатанной



0



Модератор

Эксперт MS Access

11342 / 4661 / 748

Регистрация: 07.08.2010

Сообщений: 13,508

Записей в блоге: 4

19.11.2018, 19:40

20

Цитата
Сообщение от zics
Посмотреть сообщение

есть документ Word с одной единственной закладкой

хотелось бы посмотреть, как и ексель файл
если не секрет конечно
излишнюю конфу можно заменить условным текстом

—-
сложно советовать, если не понимаешь конкретной ситуации



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

19.11.2018, 19:40

20

Нередко простановка HTML тегов в статье занимает почти столько же времени, сколько ее написание. Особенно часто такая проблема возникает со статьями со сложной версткой, включающей множество заголовков, списков, цитат и стилей.

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

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

  • выбрать пункт меню Вид –> Макросы –> Запись макроса;
  • Запись макроса

  • дать ему любое имя;
  • Имя макроса

  • выполнить необходимые действия, которые вы хотите автоматизировать;
  • остановить запись (Вид –> Макросы –>Остановить запись).

Остановка записи

Кликнув по пункту меню Вид –> Макросы –> Запись макроса, вы откроете окно со список всех имеющихся у вас макросов и сможете запустить их, отредактировать или удалить.

Расстановка тегов абзаца <P> в Word при помощи VBA макроса

Предварительная простановка тегов

в тексте перед его размещением требуется при работе со многими CMS. Далеко не все встроенные в web-движки редакторы могут автоматически опознать абзацы в статье и автоматически вставить туда тексты. Кроме того, нередко разбивку текста HTML-тегами требуют и от копирайтеров, чтобы размещение статьи занимало у заказчика как можно меньше времени.

Самый простой способ автоматизировать вставку HTML-тега в Word – это использование опции автозамены (окошко «Найти и заменить»), вызываемой сочетанием клавиш Ctrl+H.

Вставляем в строку «Найти» сочетание ^p, а в строку «Заменить на» </p>^p<p> и жмем на кнопку «Заменить все». Word автоматически проставит необходимые HTML-теги в тексте.

Замена абзацев на HTML-теги

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

  1. Включаем запись макроса.
  2. Выполняем замену абзацев на HTML-теги в тексте при помощи опции «Заменить все».
  3. Останавливаем запись.

Теперь, чтобы проставить тег <P> в статье, вам будет достаточно нажать единственную кнопку запуска макроса.

Готовый код (помимо простановки тегов, он изменяет шрифт текста на Times New Roman и устанавливает размер 11):

Sub P()



Selection.WholeStory
Selection.Font.Name=»TimesNewRoman»
Selection.Font.Size=11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»^p»
.Replacement.Text=»</p>^p<p>»
.Forward=True
.Wrap=wdFindAsk
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.HomeKeyUnit:=wdStory
Selection.TypeTextText:=»<p>»
Application.Browser.Next
Selection.EndKeyUnit:=wdStory
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
End Sub

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

Как видите, код интуитивно понятный, и многие команды VBA имеют говорящее название, указывающее на их функцию:

  • Selection.Find.Replacement.ClearFormatting – заменить в выбранном тексте,
  • .Text – текст, который нужно найти;
  • .Replacement.Text – текст для замены.

Команда Selection.TypeBackspace обозначение удаление одного символа, стоящего впереди курсора. Она необходима, так как в случае выполнения замены абзацев на HTML-теги

в конце всегда будет находиться лишний открывающий тег <P>.

Продолжим писать наш макрос для «Ворда». Пусть он обрамляет тегами <b></b> или <strong></strong> или <span class=»bolder»></span> текст, выделенный жирным.

Сделать это при помощи автозамены можно так.

В поле «Найти» вставляем текст (<*>). В пункте «Формат» выбираем Шрифт –> Полужирный. Ставим галочку в пункте «Подстановочные знаки». В поле «Заменить на» пишем <b>1</b>. Нажимаем «Заменить все».

Замена жирного текста в Ворде

У такой опции есть один недостаток: программа расставит обрамляющие HTML-теги не возле вокруг всего «куска» жирного текста, а вокруг каждого слова, следовательно, итоговый код будет очень грязный.

Лишние HTML-теги

Чтобы исправить эту ошибку, просто заменим </b> <b> на пробел.

Удаляем лишние теги

Итоговый код (на примере замены на <span class=»bolder»></span>):

Sub B()



Selection.Find.ClearFormatting
Selection.Find.Font.Bold=True
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»(<*>)»
<span class=»»bolder»»>1</span>
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
WithSelection.Find
.Text = «</span><span class=»»bolder»»>»
.Replacement.Text=»»
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
End Sub

Двойные кавычки в коде – это не опечатка, так как именно таким образом осуществляется экранирование кавычек в VBA-скриптах.

Аналогичным способом вы можете дополнить макрос, например, обрамляя курсив тегами <i></i> или <blockquote></blockquote>.

Автоматическая простановка тегов заголовков

Чтобы автоматически расставить заголовки H1, H2, H3, H4, H5 и H6, необходимо задать для них размер шрифта, отличный от остального текста. Например, если вы пишите статью 12 размером, можно выделять заголовки 16 размером. Тогда опция автозамены будет выглядеть так:

  • в поле «Найти» (<*>),
  • в поле «Заменить на» <h2>1</h2>,
  • ставим галочку «Подстановочные знаки»,
  • в разделе «Формат» указываем 16 шрифт.

Простановка тегов H1

Затем заменяем лишние «</h2> <h2>».

Макрос будет выглядеть следующим образом:

Selection.Find.ClearFormatting
Selection.Find.Font.Size=18
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»(<*>)»
.Replacement.Text=»<h2>1</h2>»
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Size=16
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»</h2><h2>»
.Replacement.Text=»»
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
EndSub

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

Содержание

  • Области использования макросов:
  • Включение макросов
  • Запись макросов
  • Изменение комбинаций клавиш для макроса
  • Запуск макроса
  • Создание нового макроса
  • Вопросы и ответы

Как создать макрос в Ворде

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

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

Области использования макросов:

    1. Ускорение часто выполняемых операций. В числе таковых форматирование и редактирование.

    2. Объединение нескольких команд в целостное действие “от и до”. Например, с помощью макроса можно вставить таблицу заданного размера с необходимым количеством строк и столбцов.

    3. Упрощение доступа к некоторым параметрам и инструментам, расположенным в различных диалоговых окнах программы.

    4. Автоматизация сложных последовательностей действий.

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

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

По умолчанию макросы доступны не во всех версиях MS Word, точнее, они просто не включены. Чтобы активировать их необходимо включить средства разработчика. После этого на панели управления программы появится вкладка “Разработчик”. О том, как это сделать, читайте ниже.

Примечание: В версиях программы, в которых макросы доступны изначально (например, Ворд 2016), средства для работы с ними находятся во вкладке “Вид” в группе “Макросы”.

Кнопка Макросы в Word

1. Откройте меню “Файл” (кнопка “Microsoft Office” ранее).

2. Выберите пункт “Параметры” (ранее “Параметры Word”).

3. Откройте в окне “Параметры” категорию “Основные” и перейдите в группе “Основные параметры работы”.

4. Установите галочку напротив пункта “Показывать вкладку “Разработчик” на ленте”.

5. На панели управления появится вкладка “Разработчик”, в которой и будет находиться пункт “Макросы”.

Lumpics.ru

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

1. Во вкладке “Разработчик” или, в зависимости от используемой версии Ворда, во вкладке “Вид”, нажмите кнопку “Макросы” и выберите пункт “Запись макроса”.

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

2. Задайте имя для создаваемого макроса.

Окно Запись макроса в word

Примечание: Если вы, создавая новый макрос, даете ему точно такое же имя, как у встроенного в программу, действия, записанные вами в новый макрос, будут выполняться взамен стандартным. Для просмотра макросов, доступных в MS Word по умолчанию, в меню кнопки “Макросы” выберите “Команды Word”.

3. В пункте “Макрос доступен для” выберите то, для чего он будет доступен: шаблон или документ, в который его следует сохранить.

Выбор места для применения макроса в Word

    Совет: Если вы хотите, чтобы создаваемый макрос был доступен во всех документах, с которыми вы работаете в дальнейшем, выберите параметр “Normal.dotm”.

4. В поле “Описание” введите описание для создаваемого макроса.

Описание макроса в Word

5. Выполните одно из действий, указанных ниже:

  • Начните запись — чтобы приступить к началу записи макроса, не связывая его при этом с кнопкой на панели управления или комбинацией клавиш, нажмите “ОК”.
  • Создайте кнопку — чтобы связать создаваемый макрос с кнопкой, расположенной на панели управления, выполните следующее:
      • Нажмите “кнопке”;
      • Выберите документ или документы, в которых требуется добавить создаваемый макрос на панель быстрого доступа (раздел “Настройка панели быстрого доступа”);

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

      Совет: Чтобы создаваемый макрос был доступен для всех документов, выберите параметр “Normal.dotm”.

    Доступ к макросу в Word

    В окне “Макрос из” (ранее “Выбрать команды из”) выберите макрос, который следует записать, нажмите “Добавить”.

    Добавить макрос в Word

      • Если вы хотите настроить эту кнопку, нажмите “Изменить”;
      • Выберите подходящий символ для создаваемой кнопки в поле “Символ”;
      • Введите имя макроса, которое будет отображаться в дальнейшем в поле “Отображаемое имя”;
      • Для начала записи макроса дважды кликните по кнопке “ОК”.

    Запись макроса ОК в Word

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

  • Назначьте сочетание клавиш — Для того, чтобы назначить комбинацию клавиш для создаваемого макроса, выполните следующие действия:
      • Кликните по кнопке “Клавишами” (ранее “Клавиатура”);

    Запись макроса клавишами в Word

      • В разделе “Команды” выберите макрос, который необходимо записать;

    Настройка клавиатуры в Word

      • В разделе “Новое сочетание клавиш” введите любую удобную для вас комбинацию, после чего нажмите кнопку “Назначить”;

    Настройка комбинаций клавиатуры в Word

      • Для начала записи макроса нажмите “Закрыть”.

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

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

    Урок: Горячие клавиши в Ворде

    7. Для остановки записи макроса нажмите “Остановить запись”, эта команда расположена в меню кнопки “Макросы” на панели управления.

    остановить запись макроса в Word

    Изменение комбинаций клавиш для макроса

    1. Откройте окно “Параметры” (меню “Файл” или кнопка “MS Office”).

    2. Выберите пункт “Настройка”.

    3. Нажмите на кнопку “Настройка”, расположенную рядом с полем “Сочетание клавиш”.

    4. В разделе “Категории” выберите “Макросы”.

    5. В открывшемся списке выберите макрос, который необходимо изменить.

    6. Кликните по полю “Новое сочетание клавиш” и нажмите клавиши или комбинацию клавиш, которые вы хотите назначить для конкретного макроса.

    Настройка клавиатуры в Word

    7. Убедитесь, что назначенное вами сочетание клавиш не используется для выполнения другой задачи (поле “Текущее сочетание”).

    8. В разделе “Сохранить изменения” выберите подходящий вариант (место) для сохранения места, где макрос будет запускаться.

    Сохранить Настройки клавиатуры в word

      Совет: Если вы хотите, чтобы макрос был доступен к использованию во всех документах, выберите параметр “Normal.dotm”.

    9. Нажмите “Закрыть”.

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

    1. Нажмите на кнопку “Макросы” (вкладка “Вид” или “Разработчик”, в зависимости от используемой версии программы).

    Открыть макросы в Word

    2. Выберите макрос, который хотите запустить (список “Имя макроса”).

    3. Нажмите “Выполнить”.

    Выбор Макроса в Word

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

    1. Нажмите кнопку “Макросы”.

    Кнопка макросы в Word

    2. Задайте имя для нового макроса в соответствующем поле.

    Имя Макроса в Word

    3. В разделе “Макросы из” выберите шаблон или документ, для которого будет сохранен создаваемый макрос.

    Создать Макрос в Word

      Совет: Если вы хотите, чтобы макрос стал доступен во всех документах, выберите параметр “Normal.dotm”.

    4. Нажмите “Создать”. Будет открыт редактор Visual Basic, в котором и можно будет создать новый макрос на языке Visual Basic.

    Microsoft Visual Basic for Applications - Normal

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

    Понравилась статья? Поделить с друзьями:
  • Макросы visual basic for excel
  • Макросы в excel для чайников с нуля
  • Макросы в excel ворд
  • Макросы vba не поддерживаются в этой версии excel
  • Макросы в excel для суммирования