Изменение шрифта в PowerPoint с помощью поля ввода VBA - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь изменить шрифт всего текста в презентации PowerPoint в зависимости от того, какой шрифт вводит пользователь, но когда я пытаюсь, он ничего не меняет. Куда я иду не так? Есть ли лучший способ реализовать это ... скажем, с помощью выпадающего списка шрифтов или чего-то еще? Поскольку я хочу также реализовать размер шрифта / жирный шрифт / itali c et c тоже. Спасибо!

Sub ChangeFont()

Dim bpFontName As String

        bpFontName = InputBox("What font would you like to change EVERYTHING to?")


    With ActivePresentation
        For Each Slide In .Slides
            For Each Shape In Slide.Shapes
                With Shape
                    If .HasTextFrame Then
                        If .TextFrame.HasText Then
                            .TextFrame.TextRange.Font.Name = bpFontName
                            'Set font size below
                            .TextFrame.TextRange.Font.Size = 30
                            'Set if you want the font bold below - msoFalse = no
                            .TextFrame.TextRange.Font.Bold = msoTrue
                            'Set if you want the font bold below - msoFalse = no
                            .TextFrame.TextRange.Font.Italic = msoTrue
                        End If
                    End If
                End With
            Next
        Next
    End With
End Sub

1 Ответ

0 голосов
/ 28 февраля 2020

Для начала, вы не уменьшали яркость некоторых переменных, и не рекомендуется использовать зарезервированные слова (Slide, Shape) в качестве имен переменных. Я исправил это так:

Sub ChangeFont()

Dim bpFontName As String
Dim oSld as Slide
Dim oSh as Shape

        bpFontName = InputBox("What font would you like to change EVERYTHING to?")


    With ActivePresentation
        For Each oSld In .Slides
            For Each oSh In oSld.Shapes
                With oSh
                    If .HasTextFrame Then
                        If .TextFrame.HasText Then
                            .TextFrame.TextRange.Font.Name = bpFontName
                            'Set font size below
                            .TextFrame.TextRange.Font.Size = 30
                            'Set if you want the font bold below - msoFalse = no
                            .TextFrame.TextRange.Font.Bold = msoTrue
                            'Set if you want the font bold below - msoFalse = no
                            .TextFrame.TextRange.Font.Italic = msoTrue
                        End If
                    End If
                End With
            Next
        Next
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...