IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - [Risolto] macro per creare report su powerpoint
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

[Risolto] macro per creare report su powerpoint

 Post Reply Post Reply
Author
Message
house View Drop Down
Utente Base
Utente Base
Avatar

Joined: 25/Mar/2008
Status: Offline
Points: 90
Post Options Post Options   Thanks (0) Thanks(0)   Quote house Quote  Post ReplyReply Direct Link To This Post Topic: [Risolto] macro per creare report su powerpoint
    Posted: 08/Giu/2012 at 15:01
Ciao a tutti,

vorrei automatizzare il processo di preparazione dei report del mio ente creando una macro su un file di excel che mi autocompili un file in pptx.
Ho trovato qualche esempio navigando qua e la di cose simili, ma non fanno ciiò che mi serve e soprattutto per il mio livello di conoscenza del VBA è troppo complicato

Il file in excel è composto da 15 fogli e viene aggiornato ogni mese, per generare una presentazioni al mese
il 1° contiene tutti i dati scaricati da un portale aziendale e tutte una serie di formule
dal foglio 2 al 7 ci sono una serie di tabelle che si autocompilano/aggioranno pescando dal foglio 1
dal foglio 8 al 15 ci sono i vari grafici generati dalle pagine precedenti

Il file pptx ha la prima pagina e i vari titoli/piè di pagina già preimpostati.

Io vorrei poter fare un incolla speciale per mettere il grafico del foglio 15 su excel nella pagina 2 del report, poi il graf del foglio 16 a pagina 3 e via così fino alla fine.

Purtroppo per specifica richiesta dell'HQ non possiamo fare un solo report con i collegamenti al file di excel.

Avete voglia di aiutarmi ?.... se serve il file excel e il modello pptx, ditemelo e vi preparo un file senza dati sensibili

Grazie infinite.



Edited by house - 15/Giu/2012 at 23:42
House
Back to Top
jorel View Drop Down
Veterano
Veterano


Joined: 13/Mar/2009
Status: Offline
Points: 1531
Post Options Post Options   Thanks (0) Thanks(0)   Quote jorel Quote  Post ReplyReply Direct Link To This Post Posted: 08/Giu/2012 at 15:10
Significa che non puoi fare un hyperlink aggiornabile?
Back to Top
house View Drop Down
Utente Base
Utente Base
Avatar

Joined: 25/Mar/2008
Status: Offline
Points: 90
Post Options Post Options   Thanks (0) Thanks(0)   Quote house Quote  Post ReplyReply Direct Link To This Post Posted: 08/Giu/2012 at 22:10
esatto
dobbiamo fare dei copia incolla speciale su una presentazione standard
questo perchè è la reportistica di stabilimento da cui poi vengono prese alcune sezioni e messe insieme a quelle degli altri stabilimenti per il report di divisone e così via per tutte le ns divisioni...è un po macchinoso

House
Back to Top
jorel View Drop Down
Veterano
Veterano


Joined: 13/Mar/2009
Status: Offline
Points: 1531
Post Options Post Options   Thanks (0) Thanks(0)   Quote jorel Quote  Post ReplyReply Direct Link To This Post Posted: 10/Giu/2012 at 14:45
Penso che potresti comunque usare gli hyperlink, con una macro che fa il lavoro richiesto.

Preparazione.
- Prepara un documento "base" con gli hyperlink;
- Ad una modifica dei report, salva il documento con un nuovo nome e controlla che gli hyperlink si siano aggiornati.

Esecuzione.
La macro prima controlla che il documento non sia quello "base" e poi, in caso positivo, esegue le seguenti operazioni:
- per ciascuna alla diapositiva... (For Each...);
>- per ciascun oggetto hyperlink (altro For Each...);
>>- determina posizione e dimensioni dell'oggetto;
>>- taglia via l'oggetto e poi lo incolla come oggetto "statico" (tipicamente una immagine Enhanced o Png);
>>- ripristina posizione e dimensioni dell'oggetto.

In questo modo automatizzi il faticoso lavoro di copia-incolla però eviti di dare alla macro il lavoro di passare dai documenti di elaborazione a quello di report: il documento "base" provvede agli aggiornamenti; la macro fa il copia-incolla.
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1229
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 10/Giu/2012 at 16:11

Sempre nello stesso forum, ma nell'area PowerPoint, è stata evidenziata la medesima problematica (creare
da Excel una presentazione PPT)
http://www.ialweb.it/forum/forum_posts.asp?TID=16463732

Nelle conclusioni viene indicato un link ove è possibile scaricare un demo che effettua la creazione di 12 slide partendo da 12 fogli di Excel che è similare come esigenza a quanto da te evidenziato.

Vedi se può esserti di aiuto. Bye

Willy
Back to Top
house View Drop Down
Utente Base
Utente Base
Avatar

Joined: 25/Mar/2008
Status: Offline
Points: 90
Post Options Post Options   Thanks (0) Thanks(0)   Quote house Quote  Post ReplyReply Direct Link To This Post Posted: 11/Giu/2012 at 11:21

Jorel, grazie per il suggerimento, provo a vedere se riesco a "creare" quanto suggerisci

Willy55, grazie anche a te, sembra proprio quello che cerco...

vi faccio sapere come va a finire
House
Back to Top
house View Drop Down
Utente Base
Utente Base
Avatar

Joined: 25/Mar/2008
Status: Offline
Points: 90
Post Options Post Options   Thanks (0) Thanks(0)   Quote house Quote  Post ReplyReply Direct Link To This Post Posted: 11/Giu/2012 at 14:24

Di nuovo ciao,

non ho ancora guardato tutto ma girovagando in rete ho trovato il file che vi allego che fa ciò che mi serve.
Se potesse incollare il tutto su un file pptx già preimpoistato, specificandogli magari da che foglio excel partire (esempio il secondo del sul file allegato) sarebbe perfetto
 
Per fare la prima parte ho trovato questa parte di codice, ma non mi riesce di farla funzionare nel file che vi ho allegato.
Dim ActFileName As Variant
Dim ScaleFactor As Single
    ActFileName = Application.GetOpenFilename("Microsoft PowerPoint-Files (*.pptx), *.pptx") 'era ppt, funzionano entrambi
    ScaleFactor = Range("myScaleFactor").Value
    Set PP = CreateObject("Powerpoint.Application")
    If ActFileName = False Then
        PP.Activate
        PP.Presentations.Add
        Set PP_File = PP.ActivePresentation
    Else
        PP.Activate
        Set PP_File = PP.Presentations.Open(ActFileName)
    End If
Per la seconda parte...buio completo
 
1000 grazie
 
House
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1229
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 12/Giu/2012 at 15:24

Se guardi il codice, nei vari step, poi verificare che vengono copiati i vari fogli di Excel in altrettante diapositive di PowerPoint.


Sub WorkbooktoPowerPoint()

'Step 1:  Declare your variables
    Dim pp As Object
    Dim PPPres As Object
    Dim PPSlide As Object
    Dim xlwksht As Worksheet
    Dim MyRange As String
    Dim MyTitle As String
   
'Step 2:  Open PowerPoint, add a new presentation and make visible
    Set pp = CreateObject("PowerPoint.Application")
    Set PPPres = pp.Presentations.Add
    pp.Visible = True
       

'Step 3:  Set the ranges for your data and title
    MyRange = "B2:BH40"  '<<<Change this range
   
'Step 4:  Start the loop through each worksheet
    For Each xlwksht In ActiveWorkbook.Worksheets
    xlwksht.Select
    Application.Wait (Now + TimeValue("0:00:1"))

'Step 5:  Copy the range as picture
    xlwksht.Range(MyRange).CopyPicture _
    Appearance:=xlScreen, Format:=xlPicture
   
'Step 6:  Count slides and add new blank slide as next available slide number
          '(the number 12 represents the enumeration for a Blank Slide)
    SlideCount = PPPres.Slides.Count
    Set PPSlide = PPPres.Slides.Add(SlideCount + 1, 12)
    PPSlide.Select
        
'Step 7:  Paste the picture and adjust its position
    PPSlide.Shapes.Paste.Select
    pp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
    pp.ActiveWindow.Selection.ShapeRange.Top = 1
    pp.ActiveWindow.Selection.ShapeRange.Left = 1
    pp.ActiveWindow.Selection.ShapeRange.Width = 700
   
       
'Step 8:  Add the title to the slide then move to next worksheet
    Next xlwksht
           
'Step 9:  Memory Cleanup
    pp.Activate
    Set PPSlide = Nothing
    Set PPPres = Nothing
    Set pp = Nothing
              
End Sub

Per partire dal secondo foglio devi modificare l'struzione "For Each xlwksht In ActiveWorkbook.Worksheets" nello step 4.
Tieni presente che le diapositive sono copiate dai fogli di Excel in base all'intervallo (Range) come riportato dallo step 5 del codice e posti come immagini (Picture).
Se gli intervalli sono diversi e gli oggetti finali compositi probabilmnete è da rivedere (scendendo in dettaglio) andando a creare diapositive che contegano elementi diversi.

Questo però è legato alle esigenze e richiede una analisi per valutare specificamenente tutti gli aspetti per realizzare una procedura che (con dati omogenei) provveda (in automatico) a fornire il trasferimento dei dati da Excel a PowerPoint.



Edited by willy55 - 12/Giu/2012 at 15:39
Willy
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,172 seconds.