将所有“工作表对象”转换为powerpoint中的图像

时间:2012-10-24 20:44:24

标签: vba powerpoint worksheet

真的不确定要放置它的堆栈站点。随意将其移动到正确的。我的问题与编程无关,但我在幻灯片中嵌入了这些“工作表对象”,有很多功能点。有些似乎是excel中的图形以及Visio中的其他图表类型项目。我需要将所有这些“工作表对象”转换为幻灯片中的图像。

我现在的流程是复制对象>粘贴为图像>移动到正确的位置>删除“工作表对象”。这是一个非常耗时且乏味的过程。有没有我可以编写的宏或可以自动转换所有这些对象的东西?到目前为止,我尝试使用谷歌搜索而没有运气

2 个答案:

答案 0 :(得分:8)

这应该让你开始:

Sub ConvertAllShapesToPic()
    Dim oSl As Slide
    Dim oSh As Shape

    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
            ' modify the following depending on what you want to
            ' convert
            Select Case oSh.Type
                Case msoChart, msoEmbeddedOLEObject, msoLinkedOLEObject
                    ConvertShapeToPic oSh
                Case msoPlaceholder
                    If oSh.PlaceholderFormat.ContainedType = msoEmbeddedOLEObject _
                        Or oSh.PlaceholderFormat.ContainedType = msoLinkedOLEObject _
                        Or oSh.PlaceholderFormat.ContainedType = msoChart _
                        Then
                        ConvertShapeToPic oSh
                    End If
                Case Else

            End Select
        Next
    Next

End Sub

Sub ConvertShapeToPic(ByRef oSh As Shape)
    Dim oNewSh As Shape
    Dim oSl As Slide

    Set oSl = oSh.Parent
    oSh.Copy
    Set oNewSh = oSl.Shapes.PasteSpecial(ppPasteEnhancedMetafile)(1)

    With oNewSh
        .Left = oSh.Left
        .Top = oSh.Top
        Do
            .ZOrder (msoSendBackward)
        Loop Until .ZOrderPosition < oSh.ZOrderPosition
    End With

    oSh.Delete

End Sub

答案 1 :(得分:1)

其他快速替代方案如果你不想写宏就是剪切对象(Ctrl + x)然后粘贴它(Ctrl + v)作为img(我们可以使用paste special来选择图像格式或者当我们做一个粘贴(Ctrl + v)MS power point会提示选项粘贴然后在其中选择图像)。这样我们就不必将图像保存到驱动器上的某个位置,然后将其插回到幻灯片中。在同一张幻灯片上剪切和粘贴将起作用。