首页 文章

如何使用VBA在powerpoint中插入列

提问于
浏览
0

问题有点棘手,我用Google搜索并获得了一个链接http://joelblogs.co.uk/2010/08/13/automatically-create-summary-slides-in-powerpoint-2010/与VBA代码,这有助于我在单个父幻灯片中插入一个演示文稿的所有其他幻灯片的 Headers 摘要 . 代码工作正常,但是当带有 Headers 的幻灯片数量超过30或50时,内容父幻灯片表不能保存整个 Headers 名称,因为名称将被隐藏并超出幻灯片演示 . 因此,我想确认是否有任何VBA代码通过目录幻灯片中的VBA将摘要名称的内容分发到三列?

1 回答

  • 0

    根据您有示例的链接,您需要在宏和宏中添加该代码:

    With summary.Shapes(2).TextFrame2
        .Column.Number = 3
    End With
    

    在摘要文本框架中设置3列 . 请记住,您还需要设置字体大小,以便将文本保留在文本框中 .

    Additional information: 我看到的是,只要您将更多文本放入摘要形状(在我的示例中为 Shapes(2) ),字体大小就会更改(减少) . 然后,您可以跟踪字体大小以检查是否应增加列数 . 这是一个例子:

    With summary.Shapes(2).TextFrame2
        If .TextRange.Font.Size < 20 Then
            'additionally check here if max approved column numbers is not exceeded.
            .Column.Number = .Column.Number + 1
        End If
    End With
    

    这是我的完整基本测试代码(可以为任何新的空演示文稿运行):

    Sub test_loop()
        Dim summary As Slide
        Set summary = ActivePresentation.Slides.Add(1, ppLayoutText)
    
        Dim enterText as string
    Do
        enterText = InputBox("Additional text to insert into Shape:")
    
    With summary.Shapes(2).TextFrame2
        .TextRange.Text = .TextRange.Text & Chr(10) & enterText
        If .TextRange.Font.Size < 20 Then
            .Column.Number = .Column.Number + 1
        End If
    End With
    
    Loop While enterText <> ""
    End Sub
    

相关问题