Domanda

Sto provando a creare programmaticamente un PowerPoint dai grafici in Access. Idealmente, quando i grafici si spostano su PowerPoint diventeranno immagini statiche e non grafici ancora collegati ai dati di accesso.

Ho provato procedure come:

 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 ricevo un messaggio di errore del tipo: Metodo Incolla fallito.

Esiste un approccio migliore? E può essere costretto a diventare un'immagine statica?

Grazie.

È stato utile?

Soluzione

Ok, ho trovato il modo di farlo. Sono ancora interessato se qualcuno ha un modo più elegante, ma per chiunque abbia a che fare con un problema simile:

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

Altri suggerimenti

Sì, questa è esattamente la tecnica che uso - e ho passato giorni a cercare soluzioni sul Web. Non è molto elegante ma funziona e la cosa bella è che ottieni un oggetto MS Graph in Powerpoint in modo che gli utenti possano facilmente applicare il proprio stile, i propri modelli ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top