Ваш инстинкт об использовании объекта Range хорош, хотя ваш код на самом деле его не использует.Вместо использования Selection.Paragraphs
установите Selection.Range
в Range - Range будет содержать абзацы.Это оригинал, который вы позже удалите.
Объявите второй Диапазон как цель для новых абзацев, используя свойство Range.Duplicate
, чтобы сделать «копию» исходного диапазона.«Свернуть» это до конца.Таким образом, когда вы добавляете абзацы, они «прикрепляются» к концу исходного диапазона.
Хорошее использование Range.FormattedText
для «копирования» абзацев.Снова сверните целевой Range после каждого добавления, чтобы избежать замены того, что вы добавили в предыдущей итерации цикла.
В конце удалите исходный Range.
Sub ShuffleBullets1()
Dim pars As word.Paragraphs
Dim rngNewPars As word.Range
Dim rngOldPars As word.Range
Dim i As Long
Set rngOldPars = Selection.Range
Set rngNewPars = rngOldPars.Duplicate
rngNewPars.Collapse wdCollapseEnd
Set pars = rngOldPars.Paragraphs
For i = pars.Count To 1 Step -1
rngNewPars.FormattedText = pars(i).Range.FormattedText
rngNewPars.Collapse wdCollapseEnd
Next
rngOldPars.Delete
End Sub