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

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

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

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

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

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

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

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

^ Наверх