1

Тема: как сделать макрос для всех строк документа

Здравствуйте!
Подскажите, пожалуйста, как сделать макрос, чтобы в конце каждой строки документа появился дополнительный одинаковый текст (или где прочитать)?

2

Re: как сделать макрос для всех строк документа

Попробуйте такое решение:

Dim Par as Paragraph
     For each Par in ActiveDocument.Paragraphs
             With Par

             ' Далее идут команды обработки параграфа
             
             End With
     Next Par

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: как сделать макрос для всех строк документа

работает!!! спасибо smile

4

Re: как сделать макрос для всех строк документа

Alex_Gur пишет:

Попробуйте такое решение:

Dim Par as Paragraph
     For each Par in ActiveDocument.Paragraphs
             With Par

             ' Далее идут команды обработки параграфа
             
             End With
     Next Par

работает!!! спасибо

Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк

5

Re: как сделать макрос для всех строк документа

aap77 пишет:

Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк

aap77, а можно ли действительно сделать макрос для обработки каждой строки?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

6

Re: как сделать макрос для всех строк документа

Вот тестовый макрос для работы со строками документа, который перебирает все строки выделяя их и сообщая тип строки

Public Sub Test()
Dim Doc As Document, Page As Page, Line As Line
    Set Doc = ActiveDocument
        For Each Page In Doc.ActiveWindow.ActivePane.Pages ' Перебираем все страницы документа
            For Each Line In Page.Rectangles(1).Lines ' В основном тексте документа перебираем строки
                    With Line
                        .Range.Select
                            t = .LineType ' Тип строки
                                Select Case t
                                    Case 0
                                        MsgBox "Тип строки " & t & ", wdTextLine(Обычнаястрока)"
                                    Case 1
                                        MsgBox "Тип строки " & t & ", wdTextRow(Строка таблицы)"
                                End Select
                    End With
            Next Line
        Next Page
End Sub

Для более подробного изучения свойств строк Line создайте новый документ, набирете несколько строк текста со знаком разрыва строки, затем создайте произвольную таблицу и скопируйте туда набранный выше текст, запустите макрос в пошаговом режиме и в окне Locas Отслеживайте объект Line

7

Re: как сделать макрос для всех строк документа

Для обращения к отдельным строкам таблицы после строки

Case 1
        MsgBox "Тип строки " & t & ", wdTextRow(Строка таблицы)"

добавьте код

For r = 1 To .Rectangles.Count
     For l = 1 To .Rectangles(r).Lines.Count
         .Rectangles(r).Lines(l).Range.Select
         MsgBox "Длинна строки " & PointsToMillimeters(.Rectangles(r).Lines(l).Width)
      Next l
Next r

Данный код перебирает строки каждой ячейки таблицы и выодит на экран длину строки в миллиметрах

8

Re: как сделать макрос для всех строк документа

А вот функция, которая возвращает объект Line той строки где находится курсор

Public Function LineSel() As Line
Dim p As Long, n As Long
    p = Selection.Information(wdActiveEndAdjustedPageNumber)
    n = Selection.Information(wdFirstCharacterLineNumber)
        Set LineSel = ActiveDocument.ActiveWindow.ActivePane.Pages(p).Rectangles(1).Lines(n)
End Function

9

Re: как сделать макрос для всех строк документа

aap77 пишет:
Alex_Gur пишет:

Попробуйте такое решение:

Dim Par as Paragraph
     For each Par in ActiveDocument.Paragraphs
             With Par

             ' Далее идут команды обработки параграфа
             
             End With
     Next Par

работает!!! спасибо

Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк

а параграф по идее это и есть 1 строка)

10

Re: как сделать макрос для всех строк документа

Bratenev пишет:
aap77 пишет:

Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк

а параграф по идее это и есть 1 строка)

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