我通过VBA,用户表单和Excel自动生成powerpoint幻灯片。您在Excel中运行VBA脚本,填写数据,数据进入excel中的单元格,然后VBA脚本提取数据并将其放入幻灯片中的文本框形状。
我的问题是我想在不同的时间使用不同的字体大小,例如,一部分为28磅字体,其余部分为14磅。问题是我对文本框所做的任何属性更改都适用于形状中的所有文本。
我当前的解决方法是草率的,只是在原始文件上生成另一个文本框并在原文中插入间距,这样看起来更大的文本是"在"文本框实际上只是坐在几条空行上。
答案 0 :(得分:0)
您可以格式化字符串中的特定子字符串,但这非常麻烦,例如假设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单元格复制的示例输出:
答案 1 :(得分:-1)
无需更改excel中的字体以反映在Word中。你可以直接做到。只需在Word VBA中粘贴下面的mentinoed行: - Activedocument.Shapes(“sam”)。TextFrame.TextRange.Words(1).Font.Size = 28