1

Тема: Как объединить несколько диапазонов?

Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?

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

2

Re: Как объединить несколько диапазонов?

Alex_Gur пишет:

Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?

Знаю только такой метод как SetRange - может вам подойдёт.

Set OurRange = ActiveDocument.Paragraphs(1).Range
    OurRange.SetRange Start:=OurRange.Start, End:=ActiveDocument.Paragraphs(2).Range.End

3

Re: Как объединить несколько диапазонов?

Спасибо, но мне нужно объединять диапазоны с разрывами.
А в Вашем случае получается неразрывный диапазон из двух первых абзацев.

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

4

Re: Как объединить несколько диапазонов?

Alex_Gur пишет:

Спасибо, но мне нужно объединять диапазоны с разрывами.
А в Вашем случае получается неразрывный диапазон из двух первых абзацев.

Я делал такую работу через добавление номеров в массив, а затем редактировал как хотел те абзацы, номера которых сохранились. Видел ещё вот такой макрос на просторах:

Макрос находит Текст по стилю и записывает его в переменную для дальнейшей работы, хотя на том сайте он позиционировался как выделяющий абзацы. Я его не пробовал.

Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("L-biblio-ru")
Do While Selection.Find.Execute(FindText:="") = True
    ruReferences = ruReferences & Selection.Text
Loop

Странно, что через Ctrl можно выделить две области, а программно нельзя. Если найдёте решение поизысканнее - дайте знать. Буду весьма признателен.

5

Re: Как объединить несколько диапазонов?

Alex_Gur пишет:

Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?

В Word программно вы этого сделать не можете (а в Excel - можете с помощью метода Union). Лучше завести массив диапазонов и каждый обрабатывать в цикле, напр.:

Sub ProcessMultipleRanges()
Dim ar(1 To 5) As range
Dim tr As range
Dim itr As Long
Dim spos  As Long
Dim epos  As Long

'Define ranges
spos = 0: epos = 1 'range of the first character in the document
Set ar(1) = ActiveDocument.range(spos, epos)
'e.t.c. for other ranges

'Process ranges
For itr = 1 To 5
    Set tr = ar(itr)
    tr.Font.Bold = True
    o = 0
Next itr
End Sub

6

Re: Как объединить несколько диапазонов?

yshindin пишет:

В Word программно вы этого сделать не можете

Точнее сказать, если все эти диапазоны образуют непрерывное пространство, то можете: началом объединенного диапазона будет минимальное значение свойства .Start входящих диапазонов, о концом объединенного диапазона - максимальное значение свойства .End  входящих диапазонов. Создание такого объединенного диапазона легко выполнить на VBA. Если же исходные диапазоны разрознены (не образуют непрерывной области) - то не можете.

7

Re: Как объединить несколько диапазонов?

yshindin пишет:
yshindin пишет:

В Word программно вы этого сделать не можете

Точнее сказать, если все эти диапазоны образуют непрерывное пространство, то можете: началом объединенного диапазона будет минимальное значение свойства .Start входящих диапазонов, о концом объединенного диапазона - максимальное значение свойства .End  входящих диапазонов. Создание такого объединенного диапазона легко выполнить на VBA. Если же исходные диапазоны разрознены (не образуют непрерывной области) - то не можете.

Грусть sad