如何使用VBA在powerpoint中插入列

时间:2013-04-05 09:02:23

标签: vba powerpoint powerpoint-vba

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

1 个答案:

答案 0 :(得分:0)

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

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

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

其他信息:只要您将更多文字放入摘要形状(我的示例中为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