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

Макрос вставки текста перед каждым абзацем

Александр спрашивает:

Как вставить (автоматически!) по всему документу в начале каждой строки один и тот же текст? Вручную это очень долго если документ много строк.

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

1
2
3
4
5
6
7
8
9
Sub insertBefore()
'Вставка текста из поля ввода перед каждым абзацем
Dim par As Paragraph
Dim Str As String
Str = InputBox("Введите текст", "Ввод текста в начало каждого абзаца")   'Диалог с полем ввода текста
For Each par In ActiveDocument.Paragraphs
   par.Range.insertBefore (Str & vbTab)   'Вставляем текст из поля ввода и добавляем табуляцию
Next
End Sub

Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:

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

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

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

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

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

  1. Татьяна
    24.04.2008 в 13:29 | #1

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

  2. Артем
    19.01.2010 в 17:36 | #2

    А как можно вставить 3 строки после нахождения определенного слова.

    Например я хочу находить в документе слова ПРИВЕТ и ниже этих слов вставить 3 строчки (ВАСЯ ПЕТЯ МИША). Слов "ПРИВЕТ" в тексте много.

    Вот так должно все выглядеть.

    ПРИВЕТ

    ВАСЯ

    ПЕТЯ

    МИША

  3. 19.01.2010 в 17:46 | #3

    Ctrl + H

    В поле Найти: привет

    В поле Заменить: ^&^pВАСЯ^pПЕТЯ^pМИША

  4. Артем
    19.01.2010 в 17:50 | #4

    Простите забыл один момент.

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

  5. Артем
    19.01.2010 в 17:55 | #5

    Нужно чтобы это был макрос. Так как вместо слов ВАСЯ ПЕТЯ МАША будут предложения. И такие замены необходимо делать очень часто. Я думаю что проще будет запускать макрос чем делать это через писк и замену. БЛАГОДАРЮ ВАС ЗА ОТВЕТ. Этот вариант меня тоже спасет. И еще я не ожидал, что так быстро ответите. СПАСИБО.

  6. Степан
    25.12.2015 в 00:47 | #6

    Здравствуйте. Не нашел на сайте решение моей задачи. Суть в следующем - есть книга на английском. Я хочу разбить её по абзацам и под каждым абзацем на английском получить машинный перевод на русский, чтобы потом спокойно читать текст в оригинале, при необходимости просматривая перевод - т.е. что-то наподобие системы чтения Ильи Франка. Пока что делал всё вручную - расставлял пустые строки под каждым абзацем с учетом исходного форматирования, выделял абзац, сочетанием назначенных мной клавиш получал перевод в Microsoft Translator, а потом нажимал в нем на кнопку "Вставить". Вопрос - не подскажите ли, как можно автоматизировать данную процедуру, т.к. для 100 страничной книжки делать всё это вручную долго и нудно? Хотя бы так, чтобы при нажатии на кнопку весь текст делился на абзацы с пустыми пробельными строками между ними, потом я бы выделял абзац, нажимал одно сочетание клавиш и под этим абзацем появлялся бы машинный перевод на русский? Ну или 2-мя сочетаниями - один для перевода, а другой для вставки переведенного фрагмента под абзацем с оригинальным текстом. Буду очень признателен.

  7. Игорь
    21.11.2017 в 06:52 | #7

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

    Код: Sub insert()

    Dim par As Paragraph

    Dim Str As String

    Dim Str2 As String

    Dim myRange As Range

    Str = "

    "

    Str2 = "

    "

    For Each par In ActiveDocument.Paragraphs

    par.Range.insertBefore (Str & vbTab)

    Next

    For Each par In ActiveDocument.Paragraphs

    .Range.InsertAfter (Str2) ЭТА ЧАСТЬ КОДА

    Next

    'Заменяем кавычки на код, для экранирования при переносе в БД

    Set myRange = ActiveDocument.Range

    myRange.Find.Execute FindText:=Chr(34), ReplaceWith:=""", Replace:=wdReplaceAll

    End Sub

    Что получается:

    Технология MVA для дисплеев обеспечивает широкий угол обзора и высокий уровень контрастности

    Светодиодный дисплей Philips

    Что надо:

    Технология MVA для дисплеев обеспечивает широкий угол обзора и высокий уровень контрастности

    Светодиодный дисплей Philips

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

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

^ Наверх