【问题标题】:VBA to keep format when copying shapes from Powerpoint to Excel将形状从 Powerpoint 复制到 Excel 时,VBA 保持格式
【发布时间】:2019-04-02 05:55:34
【问题描述】:

我正在尝试使用 Excel VBA 宏将形状从 Powerpoint 演示文稿复制到 Excel 模板。但是,我无法保留原始 Powerpoint 源中的格式。

这是我目前得到的代码

    Public Sub test()

    Dim PPT As PowerPoint.Application
    Dim p As PowerPoint.Presentation
    Dim s As Slide
    Dim aux_vec as Variant
    Dim wkbk as Workbook

    Set PPT = CreateObject("PowerPoint.Application")
    PPT.Presentations.Open Filename:=src, ReadOnly:=True
    Workbooks.Open "template.xlsx", ReadOnly:=True
    Set wkbk = ActiveWorkbook

    PPT.Activate
    Set s = PPT.ActivePresentation.Slides(1) 'Slide to be copied

    ReDim aux_vec(s.Shapes.Count)
    For i = 1 To s.Shapes.Count
        aux_vec(i) = i
    Next i

    s.Shapes.Range(aux_vec).Copy
    Set wks = wkbk.Sheets("Sheet1") 'Destination sheet
    wks.Select
    wks.Range("C3").Select
    wks.PasteSpecial 5 ' <--- Changes theme

    End Sub

有什么想法吗?

编辑:修复了 Ryan B 评论后的代码片段。

【问题讨论】:

  • 也试过了,但还是有同样的问题

标签: excel vba powerpoint


【解决方案1】:

我找到了一种解决方法: 我导出了 Powerpoint 演示文稿中使用的主题并将其导入 Excel。这样形状就可以保持它们的格式。不是最佳的,但它对我有用。

【讨论】:

  • 当一个形状被指定为主题颜色时,它实际上只是当前主题调色板的索引,而不是实际的 RGB 颜色。如果您将形状带入不同的应用程序或其他具有不同形状的印刷机,则索引可能指向同一个地方,但那里会有不同的 RGB 值。您可以通过选取 PPT 形状的 RGB 填充和线条颜色并将它们分配给 Excel 中的粘贴形状来解决此问题。
猜你喜欢
  • 2016-11-02
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
相关资源
最近更新 更多