我正在尝试创建一个宏,它可以将powerpoint演示文稿的所有音符中的所有文本更改为指定的字体和fontsize(通过InputBoxes给出)。
它似乎工作但不是在所有幻灯片中,一些幻灯片只是将fontsize重置为比给定的大。有谁知道什么可能出错?
Sub FormatNotes()
Dim intSlide As Integer
Dim strNotes As String
Dim nts As TextRange
Dim strFont, intSize
intSize = InputBox("Please enter font size", "fontsize", "12")
strFont = InputBox("Please enter font", "font type", "Calibri")
With ActivePresentation
For intSlide = 1 To .Slides.Count
Set nts = ActivePresentation.Slides(intSlide).NotesPage. _
Shapes.Placeholders(2).TextFrame.TextRange
With nts
If intSize = "" Then intSize = 12
.Paragraphs.Font.Size = intSize
.Paragraphs.Font.Name = strFont
End With
Next intSlide
End With
MsgBox ("FormatNotes uitgevoerd")
End Sub
答案 0 :(得分:0)
似乎对我有用。如果您想要将整个文本设置为相同类型的面部和大小,我也会在删除.Paragraphs之后尝试使用它。你有一个不用于调查的例子吗?
顺便说一下,您是否知道在PowerPoint中默认不显示Notes格式并且必须在“大纲”视图中打开它?
答案 1 :(得分:0)
最初的问题是为什么代码不适用于所有幻灯片。我认为这与事实有关,即代码将Placeholder(2)用作硬值,因此该代码仅与该Placeholder中的TextRange一起使用。如果NotesPage具有多个占位符,则该代码将不适用于其他占位符。
此处显示的代码使用.HasTextFrame确定占位符是否包含文本,并且仅在设置为true时才尝试设置字体大小和类型。 (我使用debug.print查看代码的内容,您可以将其注释掉。)
Sub FormatNotes()
' Written 2020-08-29 P.Irving for myself
Dim mySlide As Integer, myPlace As Integer
Dim myNotes As String
Const mySize = "11", myFont = "Calibri"
With ActivePresentation ' qualify macro name
Debug.Print "Slide#", "LEN(Notes)", "LEFT(Notes,50)"
For mySlide = 1 To .Slides.Count
myNotes = ""
For myPlace = 1 To ActivePresentation.Slides(mySlide). _
NotesPage.Shapes.Placeholders.Count
' code copied from docs.microsoft.com/en-us/office/_
' vba/api/powerpoint.textrange.font
' this code does not attempt to SET nts
With ActivePresentation.Slides(mySlide). _
NotesPage.Shapes.Placeholders(myPlace)
If .HasTextFrame Then
With .TextFrame.TextRange.Font
.Size = mySize
.Name = myFont
'.Bold = True
'.Color.RGB = RGB(255, 127, 255)
End With
myNotes = myNotes & _
ActivePresentation.Slides(mySlide). _
NotesPage.Shapes.Placeholders(myPlace). _
TextFrame.TextRange
End If ' .HasText
End With
Next myPlace
Debug.Print mySlide, Len(myNotes), Left(myNotes, 50)
Next mySlide
End With
MsgBox "Applied to " & ActivePresentation.Slides.Count & " slides", _
vbOKOnly, "FormatNotes"
结束子