Применить форматирование шрифта к тексту PowerPoint программно - PullRequest
5 голосов
/ 08 июня 2009

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

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 05 февраля 2010

Это легко сделать, используя объекты TextRange Characters, Words, Sentences, Runs и Paragraphs, а затем объект Font для установки Bold, Underline и Italic ( среди других свойств). Например:

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
4 голосов
/ 08 июня 2009

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

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

TextRange.Font.Bold = msoTrue

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

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

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

Этот пример взят из ссылки «Метод слов».

3 голосов
/ 09 июня 2009

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

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