如何使用 VBA 在 PPT 中编辑/取消组合 EMF 粘贴?

Posted

技术标签:

【中文标题】如何使用 VBA 在 PPT 中编辑/取消组合 EMF 粘贴?【英文标题】:How to edit / ungroup EMF pastes in PPT using VBA? 【发布时间】:2011-07-08 18:55:21 【问题描述】:

我是来自柏林的 Martin(德国 - 请原谅我的英语错误)...

我正在尝试使用 VBA 在 PPT 中编辑 EMF 粘贴。 EMF 粘贴是 Excel 图表,我使用了 ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial DataType:=3(增强的图元文件)

如果没有 VBA,这很容易:只需右键单击图像并“取消组合”(2x)。

在 VBA 中,我尝试了以下操作: 1.选择正确的形状(作品),然后 ActiveWindow.Selection.ShapeRange.Ungroup.Select

这会出现错误:“...无法取消组合”。

在另一个线程中给出了一个“解决方案”:录制宏 -> 在 PPT 2007 中不可能! 当我在 PPT 2003 中录制宏时,它说的完全一样: ActiveWindow.Selection.ShapeRange.Ungroup.Select 但它不起作用。

似乎在将 emf 图像转换为“office 格式”之前应该有一个步骤(如果您在单击“取消组合”后不使用 VBA 进行此操作,则会出现一个消息框询问您是否要将图形转换为“办公室格式”)。

知道如何使用 VBA 来解除分组吗?

【问题讨论】:

【参考方案1】:

这在这里有效:

Sub UngroupPastedChart()
Dim oShRange As ShapeRange
Dim oSh As Shape
Set oShRange = ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial(ppPasteEnhancedMetafile)
Set oShRange = oShRange.Ungroup
Set oShRange = oShRange.Ungroup
End Sub

如果您希望在最后选择未分组的形状,请添加 oShRange.Select。

【讨论】:

以上是关于如何使用 VBA 在 PPT 中编辑/取消组合 EMF 粘贴?的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBA在WORD中插入一个文本框

用VBA取消EXCEL文件VBA保护密码。

如何像 Power Query 一样使用 VBA 取消固定数量的列

ppt2007版smartart怎样设置浮入动画效果

如何阻止某人取消隐藏我的 Excel 工作表?

Powerpoint VBA 选择幻灯片特定区域内的所有形状