Pergunta

Estou tentando criar programaticamente um PowerPoint a partir de gráficos no acesso. Idealmente, quando os gráficos se movem para o PowerPoint, eles se tornarão imagens estáticas e não os gráficos ainda vinculados aos dados de acesso.

Eu tentei procedimentos 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

E recebo uma mensagem de erro como: o método de pasta falhou.

Existe uma abordagem melhor? E pode ser forçado a se tornar uma imagem estática?

Obrigada.

Foi útil?

Solução

Ok, eu encontrei uma maneira de fazer isso. Ainda estou interessado se alguém tiver uma maneira mais elegante, mas para qualquer outra pessoa que lide com um problema semelhante:

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

Outras dicas

Sim, essa é exatamente a técnica que eu uso - e passei dias pesquisando soluções na Web. Não é muito elegante, mas funciona e o bom é que você obtém um objeto de gráfico MS no PowerPoint para que os usuários possam aplicar facilmente seu próprio estilo, modelos etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top