【问题标题】:change font within a shape ppt改变形状ppt中的字体
【发布时间】:2015-12-04 21:02:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: vba excel powerpoint


    【解决方案1】:

    您可以格式化字符串中的特定子字符串,但这非常麻烦,例如假设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 单元格复制的示例输出:

    【讨论】:

    • 看到第一个单词总是出现在文本框字符串的开头,这绝对是一个可行的解决方案!太感谢了!现在我可以删除那些讨厌的假形状了:)
    【解决方案2】:

    无需更改 excel 中的字体以反映在 Word 中。你可以直接做。只需将以下提及的行粘贴到 Word VBA 中:- Activedocument.Shapes("sam").TextFrame.TextRange.Words(1).Font.Size = 28

    【讨论】:

    • 感谢您尝试回答我的问题,但也许您根据大卫的回答误解了?我不使用 word,我使用的是 Powerpoint,特别是文本框。编辑文本框上的字体属性适用于所有文本,因此他的字符显式解决方法就可以了。感谢您尝试提供帮助!
    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多