Здравствуйте!
Из другого поста следует, что передать подпрограмме параметр, который будет указывать на обработку выделенного фрагмента или всего документа, можно:
Спойлер
Sub макрос()
Dim rng As Range
' Присваиваем имя "rng" выделенному фрагменту, иначе при действиях с текстом,
' Selection изменяется.
Set rng = Selection.Range.Duplicate
' ' Присваиваем имя "rng" основному тексту.
' Set rng = ActiveDocument.Range.Duplicate
ParList2TextSel rng
End Sub
Private Sub ParList2TextSel(rng As Range)
Dim i&, li, fli, ls$
' Цикл по абзацам объекта "Range".
For i = rng.Paragraphs.Count To 1 Step -1
With rng.Paragraphs(i).Range
ls = .ListFormat.ListString 'текст нумерации
If ls <> "" Then 'есть нумерация
li = .ParagraphFormat.LeftIndent
fli = .ParagraphFormat.FirstLineIndent
.InsertBefore ls & ChrW(160)
.ListFormat.RemoveNumbers wdNumberParagraph
.ParagraphFormat.LeftIndent = li
.ParagraphFormat.FirstLineIndent = fli
End If
End With
Next
End Sub
Но как быть, когда выделенная область находится в сносках? Какой параметр надо передавать?
Можно использовать объект "Selection". Для Selection не имеет значения, где выделено.
А можно ли как-то определить, где находится выделенный фрагмент - в сносках или не в сносках?
Макрос
Sub macro()
Select Case Selection.StoryType
Case wdMainTextStory
MsgBox "основной текст", vbInformation
Case wdFootnotesStory
MsgBox "страничные сноски", vbInformation
Case wdEndnotesStory
MsgBox "концевые сноски", vbInformation
End Select
End Sub