簡體   English   中英

Excel VBA,將新幻燈片添加到PPT時錯誤438

[英]Excel VBA, error 438 when adding a new slide to PPT

我正在嘗試為打開的excel文件中的每個圖表在現有的powerpoint演示文稿中添加一個silde。 VBA不斷拋出錯誤。 在此處pptApp.ActivePresentation.Add中,我不斷收到一個錯誤,提示該對象不支持方法。在此處,ActiveChart.ChartArea.Copy表示未設置對象變量。

看起來似乎沒有希望了嗎?

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

我認為在添加幻燈片時,那里的一切都錯了。 您已經創建了演示文稿,因此只需要添加幻燈片和粘貼圖表即可? 您在循環中所做的事情(是錯誤的)是為需要粘貼的每個圖表添加一個新的演示文稿,然后向其幻燈片。

嘗試簡化它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM