2017-02-17 7 views
0

J'utilise ce code pour exporter les graphiques Excel PowerPointVBA (et VB6) en question coller à partir d'Excel à PowerPoint

Sub ChartsToPresentation() 

Dim PPApp As PowerPoint.Application 
Dim PPPres As PowerPoint.Presentation 
Dim PPSlide As PowerPoint.Slide 
Dim PresentationFileName As Variant 
Dim SlideCount As Long 
Dim iCht As Integer 

Application.CutCopyMode = False 
Set PPApp = GetObject(, "Powerpoint.Application.16") 
Set PPSlide = PPApp.ActiveWindow.View.Slide 
nv = PPApp.ActiveWindow.Selection.SlideRange.SlideIndex 

    ActiveChart.ChartArea.Select 
    Selection.Copy 

ggg: Set shp = PPApp.ActivePresentation.Slides(nv).Shapes.PasteSpecial(DataType:=0) 
If Err Then GoTo ggg 
Application.CutCopyMode = False 
End Sub 

Comme je l'invoque sous de nombreuses cartes différentes dans une boucle, je get souvent une erreur "Le Presse-papiers est vide ou contient des données qui ne peuvent pas être collées". Il ressemble à un problème de délai entre la copie et le collage.

J'utilise le bureau Win10 2016 64b

est-il une solution?

J'ai essayé de le faire avec VB6, mais regarde le même problème

Répondre

0

Utilisez ppPasteEnhancedMetafile = 2 ou ppPasteShape = 11 ou ppPasteJPG = 5
comme DataType pour les graphiques!

Nettoyé et le code amélioré:

Sub ChartsToPresentation() 
Dim PPApp As PowerPoint.Application 
Dim PPSlide As PowerPoint.Slide 

Application.CutCopyMode = False 
Set PPApp = GetObject(, "Powerpoint.Application") 
Set PPSlide = PPApp.ActiveWindow.View.Slide 

ActiveChart.ChartArea.Copy 
DoEvents 
PPSlide.Shapes.PasteSpecial DataType:=ppPasteShape 
Application.CutCopyMode = False 
End Sub 

Ou prendre un choix:

members of PpPasteDataType

+0

ppPasteEnhancedMetafile est pas le format que j'ai besoin – user3387046

+0

@ user3387046: J'edited d'inclure d'autres possibilités. – R3uK

+0

Toujours très instable. Peut-être causé par le 64B of Office? – user3387046