Применить форматирование шрифта к тексту PowerPoint программно

Я пытаюсь использовать VBA для вставки текста в PowerPoint TextRangeЯ использую что-то вроде этого:

ActiveWindow.Selection.SlideRange.Shapes("rec1").TextFrame.TextRange.Text = "Hi"

Однако я не могу понять, как применять жирный, курсив и подчеркивание программно (я не вижу свойства.RichText или чего-то подобного).

У меня есть простой HTML-текст с жирным, курсивом и подчеркнутым текстом, который я хотел бы преобразовать.

Как это сделать?

3 ответа

Решение

Это легко сделать с помощью TextRange"s Characters, Words, Sentences, Runs а также Paragraphs объекты, а затем это Font объект, чтобы установить полужирный, подчеркивание и курсив (среди других свойств). Например:

Sub setTextDetails()
    Dim tr As TextRange
    Set tr = ActiveWindow.Selection.SlideRange.Shapes(1).TextFrame.TextRange
        With tr
            .Text = "Hi There Buddy!"
            .Words(1).Font.Bold = msoTrue
            .Runs(1).Font.Italic = msoTrue
            .Paragraphs(1).Font.Underline = msoTrue
        End With
End Sub

Попробуйте посмотреть документацию MSDN об объекте TextRange. Он содержит примеры того, как получить доступ к свойствам Font объекта TextRange.

РЕДАКТИРОВАТЬ: Вы можете получить доступ к таким вещам, как жирный шрифт и курсив программным образом следующим образом

TextRange.Font.Bold = msoTrue

РЕДАКТИРОВАНИЕ РЕДАКТИРОВАНИЕ: Есть несколько методов, с помощью которых вы можете выбрать только определенный текст в текстовом диапазоне. Смотрите следующее:

Согласно этой ссылке, вы можете выбрать часть текста, используя один из этих методов, и установить шрифт программно. Например:

Application.ActiveDocument.Pages(1).Shapes(2) _
.TextFrame.TextRange.Words(Start:=2, Length:=3) _
.Font.Bold = True

Этот пример был взят из ссылки "Метод слова".

В дополнение к ответу выше, вы должны попытаться назвать объекты, которые вы будете изменять, так как выделение их в середине презентации может сделать PowerPoint странным. Создайте новый объект TextRange и установите его следующим образом.

dim mytextrange As TextRange
Set mytextrange = ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange
mytextrange.Words...

Вот как это можно сделать, чтобы изменить шрифт определенного текста:

Sub changeFont()

Dim oPresentation   As Presentation
Dim oSlide          As Slide
Dim oShape          As Shape
Dim stringSearched  As String    

stringSearched = "something"

'all opened presentations
For Each oPresentation In Presentations
    'all slide in them
    For Each oSlide In oPresentation.Slides
        'all shapes (anything)
        For Each oShape In oSlide.Shapes
            'only those that contain text
            If oShape.HasTextFrame Then
                If InStr(oShape.TextFrame.TextRange.Text, stringSearched) > 0 Then
                    'here you need to define where the text ends and start
                    oShape.TextFrame.TextRange.Characters(InStr(oShape.TextFrame.TextRange.Text, stringSearched), Len(stringSearched)).Font.Underline = msoTrue
                    oShape.TextFrame.TextRange.Characters(InStr(oShape.TextFrame.TextRange.Text, stringSearched), Len(stringSearched)).Font.Italic = msoFalse
                End If
            End If
        Next
    Next
Next
End Sub
Другие вопросы по тегам