Загрузка данных


Sub ApplySettings()
    ' Åñëè íè÷åãî íå âûäåëåíî - âûõîäèì
    If Selection.Type = 1 Then Exit Sub
    
    ' 1. ÎÁÙÅÅ ÎÔÎÐÌËÅÍÈÅ (Øðèôò, Ðàçìåð, Àáçàö)
    With Selection
        .Font.Name = "Times New Roman"
        .Font.Size = 14
        .Font.Italic = False ' Ñíà÷àëà óáèðàåì âåñü êóðñèâ
        
        With .ParagraphFormat
            .Alignment = 3 ' Ïî øèðèíå
            .LeftIndent = CentimetersToPoints(0)
            .RightIndent = CentimetersToPoints(0)
            .FirstLineIndent = CentimetersToPoints(1.25)
            .SpaceBefore = 0
            .SpaceAfter = 0
            .LineSpacingRule = 0 ' Îäèíàðíûé
            On Error Resume Next
            .OutlineLevel = 10
            On Error GoTo 0
        End With
    End With

    ' Ôóíêöèÿ äëÿ ïîèñêà è çàìåíû âíóòðè âûäåëåíèÿ
    ' 2. ÇÀÌÅÍÀ ÒÈÐÅ ( — íà – )
    Call CustomReplace("—", "–", False)

    ' 3. ÇÀÌÅÍÀ ÊÀÂÛ×ÅÊ ( "òåêñò" íà «òåêñò» )
    ' Èñïîëüçóåì @ äëÿ ëþáîãî êîëè÷åñòâà çíàêîâ
    Call CustomReplace("""([!""^13]@)""", "«\1»", True)

    ' 4. ÀÍÃËÈÉÑÊÈÉ ÒÅÊÑÒ ÊÓÐÑÈÂÎÌ
    ' Èùåì ëþáûå ïîñëåäîâàòåëüíîñòè ëàòèíñêèõ áóêâ (âêëþ÷àÿ dashed)
    Dim rng As Range
    Set rng = Selection.Range
    With rng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "[a-zA-Z]@" ' Íàõîäèò ëþáîå ñëîâî èç ëàòèíñêèõ áóêâ öåëèêîì
        .Replacement.Font.Italic = True
        .Replacement.Text = "^&"
        .MatchWildcards = True
        .Forward = True
        .Wrap = wdFindStop
        .Execute Replace:=2 ' Çàìåíèòü âñ¸ â âûäåëåíèè
    End With
End Sub

' Âñïîìîãàòåëüíàÿ ïîäïðîãðàììà äëÿ ïîèñêà/çàìåíû, ÷òîáû íå äóáëèðîâàòü êîä
Sub CustomReplace(findText As String, replaceText As String, isWildcard As Boolean)
    Dim r As Range
    Set r = Selection.Range
    With r.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = findText
        .Replacement.Text = replaceText
        .MatchWildcards = isWildcard
        .Forward = True
        .Wrap = wdFindStop
        .Execute Replace:=2
    End With
End Sub