Pregunta

Estoy tratando de crear mediante programación un PowerPoint a partir de gráficos en Access. Idealmente, cuando los gráficos se mueven a PowerPoint, se convertirán en imágenes estáticas y no en gráficos aún vinculados a los datos de acceso.

He intentado procedimientos como:

 Private Sub Command1_click()
     Dim pwrpnt as Object
     Dim Presentation as Object

     set pwrpnt = CreateObject("Powerpoint.Application")
     pwrpnt.Activate
     Set Presentation = pwrpnt.Presentation.Open("C:\test.ppt")
     Me.Graph1.SetFocus
     Runcommand acCmdcopy

     Presentation.Slides(1).Shapes.Paste
     set pwrpnt = Nothing
     set Presentation = Nothing
End Sub

Y recibo un mensaje de error como: Falló el método de pegado.

¿Hay un mejor enfoque? ¿Y se puede forzar a convertirse en una imagen estática?

Gracias.

¿Fue útil?

Solución

Ok, encontré una manera de hacerlo. Todavía estoy interesado si alguien tiene una forma más elegante, pero si alguien más tiene un problema similar:

Private Sub Command1_click()
 'Note: Sample only, in real code this should probably have something to save the 
 'PPT file and then close the powerpoint application, not to mention some error handling,
 ' and possibly some picture formatting, etc.  

 Dim pwrpnt as PowerPoint.Application
 Dim Presntation as PowerPoint.Presentation

 Me.Graph0.Action = acOLECopy
 set pwrpnt = CreateObject("Powerpoint.Application")
 pwrpnt.Activate
 Set Presentation = pwrpnt.Presentations.Open("TemplateFile.ppt")
 pwrpnt.ActiveWindow.ViewType = ppViewSlide

 'This inserts it as a picture, just use .Paste to insert it as an actual chart.
 pwrpnt.ActiveWindow.View.PasteSpecial ppPasteEnhancedMetafile 
EndSub

Otros consejos

Sí, esta es exactamente la técnica que uso, y pasé días buscando soluciones en la web. No es muy elegante, pero funciona y lo bueno es que obtienes un objeto MS Graph en Powerpoint para que los usuarios puedan aplicar fácilmente su propio estilo, plantillas, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top