В прошлом я был разочарован отсутствием «чистого прямого форматирования» только в MS Word. Я должен признать, что он может быть скрыт в каком-то меню, которое я не могу найти, но так как я нашел методы для этой цели в VBA, я решил создать три небольших макроса, которые просто удалят либо прямое форматирование абзаца, либо символьное форматирование, либо и то, и другое для выбранного text.
Sub Clean_Direct()
'
' Delete direct formatting to paragraph and character
'
'
Selection.ClearCharacterDirectFormatting
Selection.ClearParagraphDirectFormatting
End Sub
Sub Clean_Direct_character()
'
' Delete direct formatting to character
'
'
Selection.ClearCharacterDirectFormatting
End Sub
Sub Clean_Direct_paragraph()
'
' Delete direct formatting to paragraph
'
'
Selection.ClearParagraphDirectFormatting
End Sub
Все они работают хорошо, если я не пытаюсь выбрать все сноски в документе, где он жалуется, что я пересекаю границы: D я думал о всех oop, которые выбирают каждую историю диапазон, но все примеры, которые я мог найти, имели какой-то тип поиска, диапазоны и методы ClearFormatting, где они недоступны. Пока мой код
Sub Cleanup()
Dim Rng As Range
For Each Rng In ActiveDocument.StoryRanges
With Rng
With Selection.Range
Selection.ClearCharacterDirectFormatting
Selection.ClearParagraphDirectFormatting
End With
End With
Next
End Sub
Но я вижу, что он вообще не работает, и я застрял. Как примечание, ClearCharacterDirectFormatting не очищает выделенный текст.
РЕДАКТИРОВАТЬ: я начал создавать некоторые предложения If, чтобы выяснить, как выбрать текст каждой сноски или сноски для выделения, но мне кажется, что я не могу захватить правильный объект. Я прокомментировал утверждение ElseIf, потому что оно жалуется на использование неправильных методов
Sub Cleanup()
For Each myStory In ActiveDocument.StoryRanges
If myStory.StoryType = wdMainTextStory Then
myStory.Select
Selection.ClearCharacterDirectFormatting
Selection.ClearParagraphDirectFormatting
Selection.Collapse
' ElseIf myStory.StoryType = wdEndnotesStory Then
' For Each myEndnote In myStory.Endnotes
' myEndnote.Text.Select
' Selection.ClearCharacterDirectFormatting
' Selection.ClearParagraphDirectFormatting
' Next myEndnote
' ElseIf myStory.StoryType = wdFootnotesStory Then
' For Each myFootnote In myStory.Footnotes
' myFootnote.FormattedText.Select
' Selection.ClearCharacterDirectFormatting
' Selection.ClearParagraphDirectFormatting
' Next myFootnote
End If
Next myStory
End Sub
Это пока общая идея.