在 PowerPoint VBA 中模拟 "Increase Font Size"

Simulating "Increase Font Size" in PowerPoint VBA

在 PowerPoint 中,如果我选择了多种尺寸的文本,我可以点击 "Increase Font Size" 或 "Decrease Font Size" 使每个 TextRange grow/shrink 增加一个 "step":

我差不多有如下手动解决方法:

Sub GrowText(ByRef t_range as TextRange)
    Dim sub_range as TextRange
    For Each sub_range in SplitBySizes(t_range)
        sub_range.Font.size = NextSize(sub_range.Font.size)
    Next sub_range
End Sub

NextSize 函数使用静态数组(8, 9, 10, 10.5, 11, 12, 14, 16, 18, 20, 24, 28, 32, 26, 40, 44, 48, 54, 60, 66, 72, 80, 88, 96) 来查找下一个最大的字体大小,我知道如何实现它。我不知道如何实现 SplitBySizes,它应该 return 一个 ArrayTextRange 个对象,文本大小相同。有没有一种方法可以做到这一点而无需逐个字符地循环?我最终会将这段代码移动到 COM 应用程序中。

改为尝试基于此的方法:

For each sub_range in t_range.Runs

每一位格式与前一个文本不同的文本是一个运行。

你也可以试试

  Application.CommandBars.ExecuteMso ("FontSizeIncrease")

您需要添加一些错误检查