2014-09-29 53 views
1

我自动通过VBA,用户窗体和Excel生成幻灯片幻灯片。您在Excel中运行VBA脚本,填写数据,数据放入Excel中的单元格中,然后VBA脚本将数据拖放到幻灯片中的文本框形状中。更改形状内的字体ppt

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

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

回答

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 

输出示例:

enter image description here

的难点当然是混合格式,我不认为有任何的解决方案易于。您需要确定需要“捕获”哪些格式,以及随后实施适当的条件逻辑以将这些格式转换为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单元格复制:

enter image description here

+0

看到第一个单词如何始终出现文本框的字符串,这绝对是一个可行的解决方案!非常感谢!现在我可以删除那些令人讨厌的假形状:) – user2533406 2014-09-29 17:36:41

-1

无需在Excel中更改字体以反映在Word中。你可以直接做。只需在Word VBA中粘贴下面的字线: - Activedocument.Shapes(“sam”).TextFrame.TextRange.Words(1).Font.Size = 28

+0

谢谢你试图回答我的问题,但也许你误解了大卫的答案?我没有用词,我正在使用Powerpoint,特别是一个文本框。在文本框上编辑字体属性适用于所有的文本,所以他的字符显式解决方法没有问题。谢谢你试图帮助,但! – user2533406 2014-09-30 16:17:40