可以将字符串内格式化特定子串,但它是非常麻烦的,例如假设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单元格复制:
看到第一个单词如何始终出现文本框的字符串,这绝对是一个可行的解决方案!非常感谢!现在我可以删除那些令人讨厌的假形状:) – user2533406 2014-09-29 17:36:41