首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将新幻灯片添加到PPT时,Excel VBA出现错误438

将新幻灯片添加到PPT时,Excel VBA出现错误438
EN

Stack Overflow用户
提问于 2016-02-12 20:28:26
回答 1查看 318关注 0票数 1

我正在尝试为打开的excel文件中的每个图表在现有的powerpoint演示文稿中添加silde。VBA不断抛出错误。在这里,我一直得到一个错误,对象不支持方法,而在这里,ActiveChart.ChartArea.Copy没有设置pptApp.ActivePresentation.Add变量。

是不是就像它看起来那样无望?

代码语言:javascript
复制
Option Explicit

#Const EARLYBINDING = False

Sub CopyAndLinkAllChartsToExistingPPT()

#If EARLYBINDING Then
  Dim pptApp As PowerPoint.Application
  Dim pptPres As PowerPoint.Presentation
  Dim pptSlide As PowerPoint.Slide

#Else

  Dim pptApp As Object
  Dim pptPres As Object
  Dim pptSlide As Object
  Const ppLayoutTitle = 1

#End If

    Dim workS As Worksheet
    Dim chartS As Excel.ChartObjects
    Dim workS_Count As Integer
    Dim chartS_Count As Integer
    Dim W As Integer
    Dim C As Integer

  'Declaring PPT objects
  Set pptApp = GetObject(, "PowerPoint.Application")
  Set pptPres = pptApp.Presentations.Add(msoTrue)
  Set pptSlide = pptPres.Slides.Add(1, ppLayoutTitle)

  'Declaring Excel objects
  Set workS = ActiveWorkbook.worksheets(1)
  Set chartS = workS.ChartObjects

  'Amount of worksheets and charts for the loops
  workS_Count = ActiveWorkbook.worksheets.Count
  chartS_Count = workS.ChartObjects.Count

    'Nested loop for all the worksheets and charts
For W = 1 To workS_Count
      For C = 1 To chartS_Count

            pptApp.ActivePresentation.Add
            pptApp.ActivePresentation.Slides.Count 1, ppLayoutTitle
            pptApp.ActiveWindow.View.GotoSlide
            pptApp.ActivePresentation.Slides.Count
            Set pptSlide = pptApp.ActivePresentation.Slides(pptApp.ActivePresentation.Slides.Count)

            chartS.Select
            ActiveChart.ChartArea.Copy

            'Pasting chart in PowerPoint slide with a data link
            pptSlide.Shapes.PasteSpecial link:=msoTrue
    Next C
Next W

  ' Clearing the objects
  Set pptApp = Nothing
  Set pptPres = Nothing
  Set pptSlide = Nothing
  Set workS = Nothing
  Set chartS = Nothing

End Sub
EN

回答 1

Stack Overflow用户

发布于 2016-02-12 21:06:43

我认为你在添加幻灯片的时候把所有的东西都搞错了。您已经创建了一个演示文稿,所以您只需要添加幻灯片和粘贴图表,对吗?您在循环中所做的(也是错误的)是为需要粘贴的每个图表添加一个新的演示文稿,然后在其中添加一个幻灯片。

试着简化它:

代码语言:javascript
复制
For W = 1 To workS_Count
  For C = 1 To chartS_Count


        Set pptSlide = pptPres.slides.add(pptPres.slides.count, ppLayoutTitle)

        chartS(chartS_Count).Select
        ActiveChart.ChartArea.Copy           

        'Pasting chart in PowerPoint slide with a data link
        pptSlide.Shapes.PasteSpecial link:=msoTrue
  Next C
Next W
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35362682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档