Fondamentalement, j'essaie d'utiliser une plage dans Excel pour produire automatiquement un ensemble de dispositions personnalisées dans PowerPoint. En suivant ce code, je suis capable de parcourir toutes les formes dans une plage prédéfinie, en copiant celles qui se trouvent dans la plage prédéfinie dans une mise en page personnalisée dans une présentation nouvellement créée.Existe-t-il un moyen de copier des formes à partir d'Excel et de les coller comme le même type de forme dans Powerpoint?
Mon problème est tout ce qu'il copie d'Excel à Powerpoint devient l'image au lieu de la forme.
est ici une partie de mon code:
Dim WS As Worksheet
Dim PPT As Object
Dim PRES As Object
Dim PPTlay As Object
Dim shp As Shape
Dim r as Range
Set WS = ActiveWorksheet
Set r = WS.Range("A1:L36")
'New PPT Presentation
On Error Resume Next
Set PPT = GetObject(class:="PowerPoint.Application")
On Error GoTo 0
If PPT Is Nothing Then Set PPT = CreateObject(class:="PowerPoint.Application")
Set PRES = PPT.Presentations.Add
PRES.PageSetup.SlideSize = ppSlideSizeOnScreen
'Delete all layouts in slideMaster
For i = PRES.SlideMaster.CustomLayouts.Count To 1 Step -1
PRES.SlideMaster.CustomLayouts(i).Delete
Next i
'Create new custom layout
Set PPTlay = PRES.SlideMaster.CustomLayouts.Add(PRES.SlideMaster.CustomLayouts.Count + 1)
'Delete all placeholders and shapes on newly created custom layout
For i = PPTlay.Shapes.Count To 1 Step -1
PPTlay.Shapes(i).Delete
Next i
'Loop through all shape in Excel range "r"
'Copy/paste to powerpoint custom Layout
For Each shp In WS.Shapes
If Not Intersect(WS.Range(shp.TopLeftCell, shp.BottomRightCell), r) Is Nothing Then
shp.Select
Selection.Copy
PPTlay.Shapes.Paste
i = PPTlay.Shapes.Count
PPTlay.Shapes(i).LEFT = shp.LEFT
PPTlay.Shapes(i).TOP = shp.TOP
End If
Next shp
J'ai essayé aussi de sélectionner toutes les formes dans la gamme, copier la sélection, puis collez-le dans la présentation, mais le même problème est survenu.
Tout conseil serait le bienvenu.
Merci!
Merci pour la réponse! Malheureusement, quand je l'ai essayé, j'ai une erreur ['-2147188160 (80048240) Shapes.PasteSpecial: Demande non valide. Le type de données spécifié n'est pas disponible.] Pour être sûr qu'il n'a pas été déclenché par une forme spécifique, j'ai utilisé On Error Resume Next. Mais pas de formes ont été copiées à la présentation. – Max