как измерить количество строк в абзаце
Может кто-то навскидку помнит?
В "моем" языке есть команда getlinebreaks. В хелпе VBA по Breaks все другое.
Спасибо.
ParagraphCount = Split(selection.text,vbCrLf)
ParagraphCount = Split(selection.text,vbCrLf)
Проверил на абзаце с несколькими строками так:
ParagraphCount2 = Split(Selection.Text, vbCr)
ParagraphCount3 = Split(Selection.Text, vbLf)
ParagraphCount4 = Split(Selection.Text, vbNewLine)
MsgBox UBound(ParagraphCount1)
MsgBox UBound(ParagraphCount2)
MsgBox UBound(ParagraphCount3)
MsgBox UBound(ParagraphCount4)
Получил всего лишь единичку для vbCR.
Т.е. перенос (перетекание) текста на новую строку вообще ничем не размечается?
Разве так может быть?
msgbox Selection.Paragraphs(cnt)
Next
PS. ;)
Вроде как потребность не слишком экзотическая, но что-то не могу пока ничего придумать самостоятельно. :o
Действительно, интересный факт. Как различать строки в пределах одно абзаца...
А вообще, чем-то кодируется перевод символов на др. строку, если строка не влезает в границы чего-нибудь (рабочего окна, например, или какого-то диалогового окна)?
Т.е. чем определяется то, что в Ворде мы видим правый край абзаца, а не тянем движок горизонтальной прокрутки до бесконечности вправо, чтобы дочитать... "Войну и Мир" до конца.
Чем достигается параметр "перенос по границе окна" (пунктик в настройках Ворда: сервис-параметры-вид)?
Но в моем языке верстальной программы есть запрос (как я уже упоминал) Getlinebreaks (с указанием типа разрыва строки и кучей всего еще).
Тогда такой вопрос (хотя может и не совсем по теме).
Если мне менять программу верстки с PageMaker (он работает только со своим языком PMScripting Language) на Adobe InDesigne (эта уже поддерживает язык VBS и JS), то в новой программе я не смогу, например, измерять кол-во строк в абзацах? Поскольку язык VBS - урезанная версия VBA?
Там можно например получить строку 2, используя Lines(2)
Ну и так далее, работаешь как с коллекцией: Lines.Item(c), Lines.Count, Lines.Add(s), Lines.Delete(c)....
ЗЫ. Кстати, VBS - это совсем не VBA. Считать так - ошибочно.
Dim StartLine, EndLine As Integer
With Selection.Paragraphs(1).Range
StartLine = .Characters(1).Information(wdFirstCharacterLineNumber)
EndLine = .Characters(.Characters.Count - 1).Information(wdFirstCharacterLineNumber)
End With
MsgBox EndLine - StartLine + 1
End Sub
ВАЖНО! Относительно ".Characters.Count - 1":
Вычитать единицу необходимо для случая "внутри таблиц" (внутри ячейки), т.к. иначе (используя .Characters.Count) выделяется вся ячейка и EndLine будет всегда равно StartLine (если быть точным - то для ПОСЛЕДНЕГО параграфа в ячейке).