Тема: как сделать макрос для всех строк документа
Здравствуйте!
Подскажите, пожалуйста, как сделать макрос, чтобы в конце каждой строки документа появился дополнительный одинаковый текст (или где прочитать)?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте!
Подскажите, пожалуйста, как сделать макрос, чтобы в конце каждой строки документа появился дополнительный одинаковый текст (или где прочитать)?
Попробуйте такое решение:
Dim Par as Paragraph
For each Par in ActiveDocument.Paragraphs
With Par
' Далее идут команды обработки параграфа
End With
Next Par
работает!!! спасибо
Попробуйте такое решение:
Dim Par as Paragraph
For each Par in ActiveDocument.Paragraphs
With Par' Далее идут команды обработки параграфа
End With
Next Par
работает!!! спасибо
Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк
Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк
aap77, а можно ли действительно сделать макрос для обработки каждой строки?
Вот тестовый макрос для работы со строками документа, который перебирает все строки выделяя их и сообщая тип строки
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
Для обращения к отдельным строкам таблицы после строки
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
Данный код перебирает строки каждой ячейки таблицы и выодит на экран длину строки в миллиметрах
А вот функция, которая возвращает объект 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
Alex_Gur пишет:Попробуйте такое решение:
Dim Par as Paragraph
For each Par in ActiveDocument.Paragraphs
With Par' Далее идут команды обработки параграфа
End With
Next Parработает!!! спасибо
Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк
а параграф по идее это и есть 1 строка)
aap77 пишет:Хорошо, что данное решение помогло, но оно фактически сделано для всех абзацев, а не для всех строк
а параграф по идее это и есть 1 строка)
Это два разных понятия, абзац и параграф могут состоять из нескольких слов, а могут и из одной
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться