VBA将所有图表的所有图表和表格从所有图纸粘贴到PowerPoint文件

时间:2017-12-09 23:09:29

标签: excel vba excel-vba powerpoint-vba

我是VBA的新手,目前手动将Excel中的粘贴数据复制到power point幻灯片。每张PowerPoint幻灯片都有图表,文本框和表格。因此,我希望复制Excel工作表中的数据并粘贴到PowerPoint,而不会丢失原始格式和更改文本框和表格中数据的能力。我发现下面的宏复制粘贴Excel工作表作为图片。但我的问题是如何以原始格式(即表格,文本框,图表等)粘贴复制的数据。任何帮助都非常感谢。

Sub WorkbooktoPowerPoint()

    'Step 1:  Declare your variables
    Dim pp As Object
    Dim PPPres As Object
    Dim PPSlide As Object
    Dim xlwksht As Worksheet
    Dim MyRange As String
    Dim MyTitle As String

    'Step 2:  Open PowerPoint, add a new presentation and make visible

    Set pp = CreateObject("PowerPoint.Application")
    Set PPPres = pp.Presentations.Add
    pp.Visible = True

    'Step 3:  Set the ranges for your data and title

    MyRange = "A1:H40"  '<<<Change this range

    'Step 4:  Start the loop through each worksheet

    For Each xlwksht In ActiveWorkbook.Worksheets
        xlwksht.Select
        Application.Wait (Now + TimeValue("0:00:1"))

    'Step 5:  Copy the range as picture

        xlwksht.Range(MyRange).CopyPicture _
            Appearance:=xlScreen, Format:=xlPicture

    'Step 6:  Count slides and add new blank slide as next available slide number
    '(the number 16 represents the enumeration for a Blank Slide)

        SlideCount = PPPres.Slides.Count
        Set PPSlide = PPPres.Slides.Add(SlideCount + 1, 16)
        PPSlide.Select

    'Step 7:  Paste the picture and adjust its position

        PPSlide.Shapes.Paste.Select
        pp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
        pp.ActiveWindow.Selection.ShapeRange.Top = 1
        pp.ActiveWindow.Selection.ShapeRange.Left = 1
        pp.ActiveWindow.Selection.ShapeRange.Width = 500

    'Step 8:  Add the title to the slide then move to next worksheet

    Next xlwksht

    'Step 9:  Memory Cleanup

    pp.Activate
    Set PPSlide = Nothing
    Set PPPres = Nothing
    Set pp = Nothing
End Sub

2 个答案:

答案 0 :(得分:0)

尝试使用copypicture的copychart方法intead。它将保留图表的格式和数据

答案 1 :(得分:0)

首先,非常感谢您使代码易于阅读和遵循,从而使此过程变得非常容易!

在大多数情况下,您的代码是正确的,我们只需要更改其中的一部分即可。 我们需要更改的部分是粘贴部分。我们将其更改为PasteSpecial方法,因为有了此方法,我们还有更多关于如何将其粘贴到PowerPoint中的选项。

将代码从Paste方法更改为PasteSpecial方法后,代码的外观如下:

Error - found in negative cache: 'com/untersee/flexnet/supplier/Component.js' from /sap/bc/ui5_ui5/sap/zfn_request/Component.js: TypeError: sap.ui.define is not a function

请记住,我通过了一个新参数来指定粘贴数据类型。我选择 ppPasteMetaFilePicture是因为您要求保留格式。但是,由于在此代码中使用的是后期绑定,因此我们必须使用枚举(在这种情况下为3)。

现在,不幸的是,有时在PowerPoint或任何Office应用程序中粘贴对象可能会非常不稳定,因此可能需要采取额外的步骤才能确保代码的行为符合预期。在PowerPoint中粘贴图片的方式也有几种,每种方式都有其独特的功能。

我实际上制作了一个YouTube视频,我们讨论了如何将对象从Excel粘贴到PowerPoint,因为这是一个常见的请求。如果您想观看视频,可以点击下面的链接。

https://youtu.be/cpwHL26Nxhc

完整披露,这是我的个人YouTube帐户。