2017-09-08 7 views
1

私は次のコードがあります。それはExcelからデータを受け取り、それをPPTテンプレートに貼り付けます。 ご覧のとおり、現在使用しているスライドを把握するためにppSlideを使用します。これを行うには、前にスライドを終えたときに次のスライドの番号を設定します。コピーのペーストは、pptに間違ったスライド上のデータをExcelに

しかし、コードを実行すると、2番目のファイル(3番目のスライド)に2番目のファイルが貼り付けられます。理由は何ですか?

Sub maakPPT() 

Application.ScreenUpdating = False 

    Dim ppApp As PowerPoint.Application 
    Dim ppPres As PowerPoint.Presentation 
    Dim ppSlide As PowerPoint.Slide 
    Dim wsReoOverzicht As Worksheet 
    Dim chPlanning As Chart 
    Dim grafPersImp As Range 
    Dim wsGrafiek As Worksheet 

    Set wsReoOverzicht = Worksheets("Reo's gestart") 
    Set chPlanning = Charts("Planning") 
    Set wsGrafiek = Worksheets("Grafiek") 
    Set grafPersImp = wsGrafiek.Range("A3:N24") 

    'ppt openen 
    Set ppApp = New PowerPoint.Application 
    ppApp.Visible = True 
    ppApp.Activate 

    'template openen 2e slide selecteren 
    Set ppPres = ppApp.Presentations.Open("F:\WGD\Dep 456566-Centrale Reorganisatieteam\AAB CRT Algemeen\PMO CRT\Dashboards\ppt presentaties\Template Totaaloverzicht.pptx") 
    Set ppSlide = ppPres.Slides(2) 

    'Totaal lopende Reo's (planning) 
    wsReoOverzicht.ListObjects("Tabel1").Range.AutoFilter Field:=12, Criteria1:= _ 
    "Lopend" 
    chPlanning.CopyPicture _ 
    Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture 

    ppSlide.Select 
    ppApp.ActiveWindow.View.Paste 
    ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True 
    ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True 
    ppSlide.Shapes(2).Width = 600 
    ppSlide.Shapes(2).Height = 375 
    ppSlide.Shapes.Range(2).Align msoAlignCenters, True 
    ppSlide.Shapes.Range(2).Align msoAlignMiddles, True 
    Set ppSlide = ppApp.ActivePresentation.Slides(3) 

    'Totaal personele impact (grafiek) 
    grafPersImp.Copy 
    ppApp.ActiveWindow.View.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 
    ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True 
    ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True 
    ppSlide.Shapes(2).Width = 400 
    ppSlide.Shapes(2).Height = 275 
    ppSlide.Shapes.Range(2).Align msoAlignCenters, True 
    ppSlide.Shapes.Range(2).Align msoAlignMiddles, True 
    Set ppSlide = ppApp.ActivePresentation.Slides(4) 
+0

第2スライドを 'Set'の方法とは別に' Set'する理由は何ですか? – CLR

+0

いいえ、ちょうど今自分自身を見て、 'Set ppSlide = ppApp.ActivePresentation.Slides(2)'にしました。 – MyName

答えて

0

最初の塗装のステップとの違いは、私はそれアクティブなシートにするppSlide.selectを使用していないということでした。

関連する問題