Тема: Как объединить несколько диапазонов?
Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?
Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?
Знаю только такой метод как SetRange - может вам подойдёт.
Set OurRange = ActiveDocument.Paragraphs(1).Range
OurRange.SetRange Start:=OurRange.Start, End:=ActiveDocument.Paragraphs(2).Range.End
Спасибо, но мне нужно объединять диапазоны с разрывами.
А в Вашем случае получается неразрывный диапазон из двух первых абзацев.
Спасибо, но мне нужно объединять диапазоны с разрывами.
А в Вашем случае получается неразрывный диапазон из двух первых абзацев.
Я делал такую работу через добавление номеров в массив, а затем редактировал как хотел те абзацы, номера которых сохранились. Видел ещё вот такой макрос на просторах:
Макрос находит Текст по стилю и записывает его в переменную для дальнейшей работы, хотя на том сайте он позиционировался как выделяющий абзацы. Я его не пробовал.
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("L-biblio-ru")
Do While Selection.Find.Execute(FindText:="") = True
ruReferences = ruReferences & Selection.Text
Loop
Странно, что через Ctrl можно выделить две области, а программно нельзя. Если найдёте решение поизысканнее - дайте знать. Буду весьма признателен.
Уважаемые коллеги,
Подскажите, пожалуйста, имеется ли в Ворде возможность объединить несколько диапазонов в один?
В 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
В Word программно вы этого сделать не можете
Точнее сказать, если все эти диапазоны образуют непрерывное пространство, то можете: началом объединенного диапазона будет минимальное значение свойства .Start входящих диапазонов, о концом объединенного диапазона - максимальное значение свойства .End входящих диапазонов. Создание такого объединенного диапазона легко выполнить на VBA. Если же исходные диапазоны разрознены (не образуют непрерывной области) - то не можете.
yshindin пишет:В Word программно вы этого сделать не можете
Точнее сказать, если все эти диапазоны образуют непрерывное пространство, то можете: началом объединенного диапазона будет минимальное значение свойства .Start входящих диапазонов, о концом объединенного диапазона - максимальное значение свойства .End входящих диапазонов. Создание такого объединенного диапазона легко выполнить на VBA. Если же исходные диапазоны разрознены (не образуют непрерывной области) - то не можете.
Грусть
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться