在形状ppt中更改字体

用户名

我通过VBA,用户窗体和Excel自动生成一张PowerPoint幻灯片。您在excel中运行VBA脚本,填写数据,数据进入excel中的单元格,然后VBA脚本提取数据并将其放入幻灯片中的文本框形状。

我的问题是我想在不同的时间使用不同的字体大小,例如,一部分使用28 pt字体,其余部分使用14 pt。问题是我对文本框所做的任何属性更改都适用于形状内的所有文本。

我当前的解决方法是草率的,只是在原始文本上生成另一个文本框,并在原始文本中插入间距,因此看起来较大的文本“位于”文本框中,而实际上只是位于预留的几行空行上。

戴维·泽门斯

您可以在字符串中设置特定子字符串的格式,但这非常麻烦,例如,假设shp有一个代表您的文本框的对象变量:

Sub foo()
Dim shp As Shape
Set shp = ActivePresentation.Slides(1).Shapes("TextBox 3")
    shp.TextFrame.TextRange.Text = "Hello, world!"
    shp.TextFrame.TextRange.Characters.Font.Size = 14 'applies uniform font to entire shape
    shp.TextFrame.TextRange.Characters(1, 5).Characters.Font.Size = 28

End Sub

输出示例:

在此处输入图片说明

当然,困难在于使用混合格式,我认为没有任何简单的解决方案。由您决定要“捕获”哪些格式,以及随后执行哪种条件逻辑将这些格式转换为PowerPoint形状。

一种可能的替代方法-这就是我成为您时要走的路线-是从Excel复制单元格,然后使用此方法粘贴到PowerPoint中。我相信这将在PowerPoint幻灯片中创建一个包含单个单元格表格您将不得不调整大小/位置,但这应该比试图捕获字体格式的每种可能的变化都容易一个数量级:

Sub foo2()
Dim shp As Shape
Dim xl As Object

    'Get Excel and copy a specific cell
    Set xl = GetObject(, "Excel.Application")
    xl.Workbooks("Book35").Sheets("Sheet2").Range("B4").Copy

    'Paste that cell in to PowerPoint as a table, preserving formats:
    ActivePresentation.Slides(1).Select
    Application.CommandBars.ExecuteMso "PasteSourceFormatting"

End Sub

从Excel单元格复制的示例输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章