1

Тема: VBA/VBS: Извлечь номер абзаца.

Полдня уже бьюсь над этой проблемой.
Как извлечь в Word номер абзаца, на котором сейчас стоит выделение (Selection то бишь)?

2

Re: VBA/VBS: Извлечь номер абзаца.

…
With objWord
    …
    Set objRange = .Selection.Range
    
    objRange.Expand wdParagraph
    
    WScript.Echo "Начало выделения — абзац №" & CStr(.ActiveDocument.Range(0, objRange.Start).Paragraphs.Count + 1)
    WScript.Echo "Конец выделения  — абзац №" & CStr(.ActiveDocument.Range(0, objRange.End).Paragraphs.Count)
    …
End With
…

* получаем из выделения диапазон («objRange»);
* расширяем этот диапазон (само выделение не трогаем!) до границ абзацев;
* считаем число абзацев в диапазоне [от начала документа («0») до начала «нашего» диапазона («objRange.Start»)], добавляя +1, — это номер первого абзаца в выделении;
* аналогично считаем число абзацев в диапазоне [от начала документа («0») до конца «нашего» диапазона («objRange.Start»)] — это номер последнего абзаца в выделении.

3 (изменено: pant-79, 2010-10-02 20:00:57)

Re: VBA/VBS: Извлечь номер абзаца.

Ну, я так понял, objRange надо объявлять только в VBS?
И wdParagraph как константу тоже...
В VBA это, по-моему, проще...

Кстати, если выделение меньше абзаца, для конца выделения номер вычисляется с ошибкой почему-то.