使用VBA在PowerPoint中识别和更改项目符号类型

时间:2019-07-19 17:40:14

标签: vba powerpoint

我试图弄清楚如何识别子弹类型并进行更改,例如。 e。检查整个演示文稿中使用的子弹是否为方形子弹。如果不是,则宏应将项目符号类型更改为正方形。

示例:在这张照片中,我想将整个幻灯片面板中的圆形子弹更改为正方形子弹。

Bullet conversion

3 个答案:

答案 0 :(得分:1)

如果仅使用本地格式创建项目符号,则其他2条回复就足够了。如果演示文稿是正常的,子弹放在幻灯片母版中,则这些圆形子弹会像难闻的气味一样不断返回。而是,将项目符号更改为幻灯片母版上的正方形,然后重置所有幻灯片以强制进行更新。这会将1级,3级和5级设置为方形子弹:

Sub ChangeSomeBullets()
  Dim oSlide As Slide
  Dim oShape As Shape

  For Each oShape In ActivePresentation.Designs(1).SlideMaster.Shapes
    If oShape.Type = msoPlaceholder Then
      If oShape.PlaceholderFormat.Type = ppPlaceholderBody Then
        For X = 1 To oShape.TextFrame2.TextRange.Paragraphs.Count
          Select Case X
            Case 1, 3, 5
              With oShape.TextFrame2.TextRange.Paragraphs(X).ParagraphFormat.Bullet
                .Font.Name = "Wingdings"
                .Character = 167
              End With
          End Select
        Next X
      End If
    End If
  Next oShape
  For Each oSlide In ActivePresentation.Slides
    oSlide.CustomLayout = oSlide.CustomLayout
  Next oSlide
End Sub

答案 1 :(得分:0)

他们并不容易。您需要将BulletFormat.Character属性更改为所需形状的Unicode数字。这是我做的:我有一个演示文稿,其中第二张幻灯片是标题和内容(两种形状)。在内容部分,我有四个项目符号。我将第一个形状从原来的形状更改为想要的形状,然后运行:

Public Sub ChangeBullets()

    Dim para As TextRange

    For Each para In ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange.Paragraphs
        Debug.Print para.ParagraphFormat.Bullet.Character, Left(para.Text, 20)
    Next para

    ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange.Paragraphs(1).ParagraphFormat.Bullet.Character = 9642

End Sub

这会在第二张幻灯片的第二个形状中循环显示四个项目符号(对),并在窗口中立即显示项目符号的字符和一些文字(以确保我在原处) 。产生了:

 111          Reality    
 9642         Consistency
 9642         No Shortcuts
 9642         The Right Tool

这告诉我项目符号以前是9642(与它的兄弟相同),我手动将其更改为111。现在我知道了Unicode数字,我可以遍历每个幻灯片,每个形状,每个段落并更改项目符号编号。

在最后一行中,我将项目符号更改回9642,只是为了确保我可以(并且它起作用)。

答案 2 :(得分:0)

您可以使用它来查看子弹的参数。

我添加了一些示例来解释如何设置字体,字符,颜色等。

onEditItem