Применить форматирование шрифта к тексту 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