2017-08-29 9 views
0

J'ai un graphique dans Excel où ma macro remplit 10 formes par le côté droit de la zone de graphique. Je veux copier uniquement le graphique sur le point d'alimentation et ne pouvais pas trouver un moyen de désactiver la copie des formes jusqu'à présent. Si je copie le graphique, il copie également les formes.Comment désactiver la copie des formes présentes dans chartarea?

+0

Les formes à l'intérieur de l'objet de graphique sont-elles? S'ils sont à l'intérieur de l'objet graphique, ils seront copiés avec le graphique. Une solution serait de les couper du tableau et de les coller sur la carte (mais pas dedans). Lorsque vous exportez le graphique (en référençant l'objet), ces formes ne doivent pas être copiées avec votre graphique. –

+0

Vous pouvez également copier/coller le graphique, puis supprimer les formes du graphique collé en faisant une boucle sur chaque forme de la collection Shapes de l'objet Graphique. – Domenic

+0

Oui, les formes sont présentes dans l'objet graphique. J'ai ces idées en tête. Vous cherchez une solution conviviale sans effort supplémentaire pour l'utilisateur. Essayé $ .controlformat.printobject = false $ ne fonctionne pas ... Vous cherchez quelque chose à ajouter dans VBA pour restreindre la copie des formes .. est-il possible ... @domenic –

Répondre

1

Voici un exemple rapide qui copie le premier tableau de la feuille active, pâtes à la première diapositive de la présentation active et supprime toutes les formes existantes du graphique collé ...

'Declare Excel variables 
Dim ChartObj As ChartObject 

'Declare PowerPoint variables 
Dim ppApp As Object 
Dim ppPres As Object 
Dim ppChartObj As Object 
Dim ppShape As Object 

'Copy first chart from active sheet 
Set ChartObj = ActiveSheet.ChartObjects(1) 
ChartObj.Copy 

'Paste chart into first slide of active presentation 
Set ppApp = GetObject(, "PowerPoint.Application") 
Set ppPres = ppApp.ActivePresentation 
Set ppChartObj = ppPres.slides(1).Shapes.Paste(1) 

'Delete shapes from chart 
For Each ppShape In ppChartObj.Chart.Shapes 
    ppShape.Delete 
Next ppShape 

Hope this aide!

+0

Merci pour cette idée. Cela a aidé. –