Dim ST As String
ST = ActiveDocument.Paragraphs(1).Range.Text
In my document, Paragraphs(1)
is actually 2 32. However, with Debug.Print ST
, the output is 2 32. Is there any way to store the data without compromising the superscript and subscript formatting?
The objective behind this is to store 5 lines in ST(1 to 5)
and then shuffle the order of the 5 lines.
CodePudding user response:
You could store them as range within a collection
Sub shuffle()
Dim col As Collection: Set col = New Collection
Dim p As Paragraph
For Each p In ThisDocument.Paragraphs
col.Add p.Range
Next
dim rg as range
Set rg = ThisDocument.Content
rg.Collapse wdCollapseEnd
'print the paragraphs to the end of the document in reversed order
Dim i As Long
For i = col.Count To 1 Step -1
rg.InsertAfter col(i).Text
Next
End Sub
CodePudding user response:
It's not clear how do you want to capture the paragraphs so I'm assuming that you will have those paragraphs selected, modify it based on your requirement:
FormattedText property can be used to replace a range with formatted text so this should work for you:
Private Sub ShuffleSelectedParagraphs()
ActiveDocument.Content.InsertParagraphAfter
Dim i As Long
For i = Selection.Paragraphs.Count To 1 Step -1
ActiveDocument.Content.Paragraphs.Last.Range.FormattedText = Selection.Paragraphs(i).Range.FormattedText
Next
End Sub
You will need to select the paragraphs first then run the Sub
, it will duplicate the selected paragraphs at the end of the document but in the reverse order.