5

真的不确定将其放置在哪个堆栈站点上。随意将其移至正确的位置。我的问题与编程并没有真正的关系,但我有很多关于幻灯片中嵌入的“工作表对象”的电源点。有些似乎是来自 excel 的图表以及来自 Visio 的其他图表类型项目。我需要将所有这些“工作表对象”转换为幻灯片中的图像。

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

4

2 回答 2

11

这应该让你开始:

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
于 2012-10-26T03:52:16.310 回答
1

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

于 2016-04-04T11:41:41.987 回答