【问题标题】:Copy all tables and charts from all sheets of Excel to PowerPoint将所有表格和图表从所有 Excel 工作表复制到 PowerPoint
【发布时间】:2016-02-26 09:55:45
【问题描述】:

我需要代码 sn-p 使用 Excel 中的宏 (VBA) 将所有图表从 Excel 文件中的所有工作表复制到 PowerPoint 文件中。

以下代码仅复制图表。我想复制所有表格、图表和图像。

Sub PushChartsToPPT()
 'Set reference to 'Microsoft PowerPoint 12.0 Object Library'
 'in the VBE via Tools > References...
 '
 Dim ppt As PowerPoint.Application
 Dim pptPres As PowerPoint.Presentation
 Dim pptSld As PowerPoint.Slide
 Dim pptCL As PowerPoint.CustomLayout
 Dim pptShp As PowerPoint.Shape

 Dim cht As Chart
 Dim ws As Worksheet
 Dim i As Long

 'Get the PowerPoint Application object:
 Set ppt = CreateObject("PowerPoint.Application")
 ppt.Visible = msoTrue
 Set pptPres = ppt.Presentations.Add

 'Get a Custom Layout:
 For Each pptCL In pptPres.SlideMaster.CustomLayouts
     If pptCL.Name = "Title and Content" Then Exit For
 Next pptCL

 'Copy ALL charts in Chart Sheets:
 For Each cht In ActiveWorkbook.Charts
     Set pptSld = pptPres.Slides.AddSlide(pptPres.Slides.Count + 1, pptCL)
     pptSld.Select

    For Each pptShp In pptSld.Shapes.Placeholders
         If pptShp.PlaceholderFormat.Type = ppPlaceholderObject Then Exit For
     Next pptShp
     If pptShp Is Nothing Then Stop

     cht.ChartArea.Copy
     ppt.Activate
     pptShp.Select
     ppt.Windows(1).View.Paste
 Next cht

 'Copy ALL charts embedded in EACH WorkSheet:
 For Each ws In ActiveWorkbook.Worksheets
     For i = 1 To ws.ChartObjects.Count
         Set pptSld = pptPres.Slides.AddSlide(pptPres.Slides.Count + 1, pptCL)
         pptSld.Select

         For Each pptShp In pptSld.Shapes.Placeholders
             If pptShp.PlaceholderFormat.Type = ppPlaceholderObject Then Exit For
         Next pptShp

        Set cht = ws.ChartObjects(i).Chart
         cht.ChartArea.Copy
         ppt.Activate
         pptShp.Select
         ppt.Windows(1).View.Paste
     Next i
   Next ws
 End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    对于图片,请尝试使用来自How to select pictures的形状

    Dim Pic As Shape
    For Each Pic In ActiveSheet.Shapes
        If Pic.Type = msoPicture Then
            Pic.Select
            'do something with image
        End If
    Next Pic
    

    【讨论】:

    • Thnx @D_Bester :) 但我每次打开一个新的 powerpoint 文件以移动图表和图片时都会看到。我有 1 个 excel 源文件和目标文件(Powerpoint 文件)知道如何保存在单个 ppt 文件中吗?
    • pptPres.saveas("C:\temp\MyPresentation.pptx") 您需要验证路径和后缀“pptx”
    • 谁能帮我解决生成的 PPT 崩溃的原因?
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2015-03-10
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2013-10-11
    相关资源
    最近更新 更多