用于Powerpoint更改注释颜色的VBA宏

用于Powerpoint更改注释颜色的VBA宏,vba,powerpoint,Vba,Powerpoint,我刚刚开始学习用VBA为PowerPoint编程(大约30分钟前)。有人能帮我做以下几件事吗 我想要一个宏,它可以循环浏览所有幻灯片的注释,并将文本更改为白色 (我知道有非宏的替代方案,但第三方软件(铰接)要求通过宏完成……说来话长) 这就是我到目前为止所做的: Sub changenotestowhite() Dim osld As Slide Dim oshp As Shape Dim strNotes As String For Each osld In Activ

我刚刚开始学习用VBA为PowerPoint编程(大约30分钟前)。有人能帮我做以下几件事吗

我想要一个宏,它可以循环浏览所有幻灯片的注释,并将文本更改为白色

(我知道有非宏的替代方案,但第三方软件(铰接)要求通过宏完成……说来话长)

这就是我到目前为止所做的:

Sub changenotestowhite()
   Dim osld As Slide
   Dim oshp As Shape
   Dim strNotes As String
   For Each osld In ActivePresentation.Slides
      For Each oshp In osld.NotesPage.Shapes
         oshp.TextFrame.TextRange.Font.Color = vbWhite
      Next oshp
   Next osld
End Sub
我收到错误消息“运行时错误:指定的值超出范围。”

谢谢


Joe

欢迎来到MS/VB著名的红鲱鱼(又称错误消息)世界

问题是:有些形状没有文本框(保存文本的形状的属性),即使形状有文本框,也可能没有任何文本。试图更改不存在的文本或文本框中不存在的文本将抛出错误

改为使用此选项,测试文本框,如果存在,在以任何方式更改文本之前,测试文本框是否包含文本:

Sub changenotestowhite()
   Dim osld As Slide
   Dim oshp As Shape
   Dim strNotes As String
   For Each osld In ActivePresentation.Slides
      For Each oshp In osld.NotesPage.Shapes
        If oshp.HasTextFrame Then
        If oshp.TextFrame.HasText Then
         oshp.TextFrame.TextRange.Font.Color = vbWhite
         End If
         End If
      Next oshp
   Next osld
End Sub

史提夫。你真是个传奇人物。我建议您访问您的社交媒体渠道并声明这一事实。人们需要知道。现在我掌握了这些知识,我将继续改变文本的大小和注释的对齐方式。多谢各位,;我永远感激你,乔乔——;-)也许是一个朴素的传说。很高兴有帮助。Font.Color属性是只读的。根据MSDN,您需要使用Font.Color.RGB=RGB(255,255,255)。它也可以按书面形式工作(.Font.Color=vbWhite),因此我没有更改Joe代码的这一部分。但是.Font.Color.RGB=RGB(r,g,b)提供了比使用vbColor常量更多的选项。您的链接指向.Font属性,该属性为只读。再深入一点,您将看到.Font对象的.Color属性,MSDN也将其声明为只读。显然,MSDN或PowerPoint对PowerPoint属性的理解是错误的。;-)PPT VBA的MSDN文档充满了错误。