Esempi e tutorial di macro VBA di PowerPoint

Questa è una guida completa per automatizzare PowerPoint utilizzando le macro VBA (Visual Basic for Applications). Di seguito troverai molti esempi utili.

PDF VBA (download gratuiti)

Scarica il nostro tutorial gratuito su VBA di Microsoft PowerPoint! O tutorial VBA per altri programmi Office!

Scarica

Esercitazione su PowerPoint VBA (macro)

Salva come presentazione con attivazione macro

La presentazione con codice VBA deve essere "Salvata con nome" Presentazione con attivazione macro di PowerPoint (*.pptm)

Abilita la scheda "Sviluppatore" nella barra multifunzione

Dovresti abilitare la scheda Sviluppatore sulla barra multifunzione prima di creare il codice VBA. Per farlo, scegli File -> Opzioni, quindi fai clic su "Personalizza barra multifunzione" e seleziona la casella accanto alla scheda "Sviluppatore" nel riquadro di destra.

Crea macro PowerPoint

Questo è un semplice esempio di una macro VBA di PowerPoint:

1234567891011 Sub SalvaPresentazioneComePDF()Dim pptName As StringDim PDFName As String'Salva PowerPoint come PDFpptName = ActivePresentation.FullName'Sostituisci l'estensione del file PowerPoint nel nome in PDFPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Fine sottotitolo

Salva la presentazione attiva come PDF. Ogni riga di codice esegue le seguenti operazioni:

  • Crea variabili per il nome PowerPoint e il nome PDF
  • Assegna il nome della presentazione attiva alla variabile pptName
  • Crea il nome PDF completo
  • Salva la presentazione come PDF

Applicazione PowerPoint

Quando il codice VBA è in esecuzione all'interno di una presentazione di PowerPoint, l'applicazione PowerPoint è l'applicazione predefinita e può essere modificata senza riferimenti espliciti. Crea una nuova presentazione

Per creare una presentazione, utilizzare il metodo Aggiungi dell'applicazione PowerPoint.

123 Presentazioni.Applicazioni.Aggiungi'o senza riferimento esplicitoPresentazioni.Aggiungi

Apri una nuova presentazione

Per aprire una presentazione nuova e vuota, usa il metodo Aggiungi della raccolta Application.Presentations

1 Presentazioni.Aggiungi

Apri una presentazione esistente

Per aprire una presentazione che hai già creato, usa il metodo Open della raccolta Application.Presentations

1 Presentazioni.Apri ("La mia presentazione.pptx")

Il codice sopra presuppone che la presentazione si trovi nella stessa directory della presentazione PowerPoint che contiene il codice.

Apri e assegna a una variabile

Dovresti assegnare la presentazione che apri a una variabile in modo da poterla manipolare secondo le tue esigenze.

12 Dim ppt come presentazioneImposta ppt = Presentazioni.Open("La mia presentazione.pptx")

Fare riferimento a Presentazione attiva

Utilizzare il riferimento ActivePrentation per manipolare la presentazione attiva nella GUI quando viene eseguito il codice VBA.

12 ' Stampa il nome della Presentazione Attiva nella Finestra ImmediataDebug.Print ActivePresentation.Name

Salva presentazione corrente

L'istruzione di seguito salverà la Presentazione attiva se è stata salvata in precedenza. Se non è stato salvato, verrà visualizzata la finestra di dialogo "Salva con nome".

1 ActivePresentation.Salva

Chiudi presentazione corrente

L'istruzione di seguito chiuderà la Presentazione attiva anche se non è stata salvata dopo l'ultima modifica.

1 ActivePresentation.Chiudi

Riferimenti utili

Assegna presentazione esistente (per nome) a variabile

12 Oscura la mia presentazione per nome come presentazioneImposta myPresentationByName = Application.Presentations("La mia presentazione")

Assegna la diapositiva attiva alla variabile

12 Dim currentSlide As SlideImposta currentSlide = Application.ActiveWindow.View.Slide

Assegna la diapositiva per indice alla variabile

12 Dim mySlide As SlideImposta mySlide = ActivePresentation.Slides(11)

Conta il numero di diapositive

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Ottieni il numero indice diapositiva della diapositiva corrente

12 Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Aggiungi una diapositiva vuota alla fine della presentazione

1234567 Dim slideCount As LongDim newSlide as SlideslideCount = ActivePresentation.Slides.CountImposta newSlide = ActivePresentation.Slides.Add(slideCount + 1, 12)' o come ppLayoutBlank = 12Imposta newSlide = ActivePresentation.Slides.Add(slideCount + 1, ppLayoutBlank)

Aggiungi una diapositiva dopo la diapositiva corrente

12345 Dim newSlide As SlideDim currentSlideIndex come numero interocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexImposta newSlide = ActivePresentation.Slides.Add(currentSlideIndex, ppLayoutBlank)

Elimina una diapositiva

1234 Dim currentSlideIndex come numero interocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides(currentSlideIndex).Elimina

Vai a una diapositiva specifica

12 'Questo ti porterà alla diapositiva numero 4Applicazione.ActiveWindow.View.GotoSlide (4)

Sposta diapositiva

Puoi spostare una diapositiva dalla sua vecchia posizione alla nuova posizione

123456 ' Passa dalla diapositiva 3 alla prima diapositivaDim oldPosition come intero, dim newPosition come interovecchiaPosizione = 3nuovaPosizione = 1ActivePresentation.Slides(oldPosition).MoveTo toPos:=newPosition

Passa attraverso tutte le diapositive

Puoi fare qualcosa con ogni diapositiva o scorrere tutte le diapositive per trovare alcune diapositive e fare qualcosa per usare il codice;

123456 Dim mySlide come diapositivaPer ogni mySlide in ActivePresentation.Slides' Fai qualcosa con la diapositiva corrente a cui si fa riferimento nella variabile 'mySlide'' Debug.Print mySlide.NameDiapositiva successiva

Passa attraverso tutte le forme della diapositiva attiva

La potenza di PowerPoint può essere realizzata utilizzando "Forme". Il codice seguente scorre tutte le forme sulla diapositiva corrente in modo che tu possa manipolarle come desideri;

123456789 Dim currentSlide as SlideDim shp come formaImposta currentSlide = Application.ActiveWindow.View.SlidePer ogni shp in currentSlide.Shapes' Fai qualcosa con la forma corrente indicata nella variabile 'shp'' Ad esempio stampa il nome della forma nella Finestra ImmediataDebug.Print shp.Nameprossimo shp

Passa attraverso tutte le forme in tutte le diapositive

Puoi scorrere tutte le forme nella presentazione aggiungendo un ciclo per passare attraverso tutte le diapositive.

123456789 Dim currentSlide as SlideDim shp come formaPer ogni correnteSlide In ActivePresentation.SlidesPer ogni shp in currentSlide.Shapes' Fai qualcosa con la forma corrente indicata nella variabile 'shp'Debug.Print shp.Nameprossimo shpProssima diapositiva corrente

Passa attraverso tutte le caselle di testo della diapositiva attiva

Le caselle di testo sono la forma più utilizzata nelle presentazioni di PowerPoint. Puoi scorrere tutte le caselle di testo aggiungendo un segno di spunta per "Tipo di forma". Le caselle di testo hanno il tipo di forma definito come costante VBA msoTextBox (il valore numerico della costante è 17)

1234567891011 Dim currentSlide as SlideDim shp come formaImposta currentSlide = Application.ActiveWindow.View.SlidePer ogni shp in currentSlide.Shapes'Controlla se il tipo di forma è msoTextBoxSe shp.Type = 17 Allora ' msoTextBox = 17'Stampa il testo nella casella di testoDebug.Print shp.TextFrame2.TextRange.TextFinisci seprossimo shp

Passa attraverso tutte le caselle di testo in tutte le diapositive

Ancora una volta, puoi scorrere tutte le caselle di testo nella presentazione aggiungendo un ciclo per passare attraverso tutte le diapositive.

1234567891011 Dim currentSlide as Slide Dim shp as ShapePer ogni correnteSlide In ActivePresentation.SlidesPer ogni shp in currentSlide.Shapes'Controlla se il tipo di forma è msoTextBoxSe shp.Type = 17 Allora ' msoTextBox = 17' Fai qualcosa con il TextBox a cui si fa riferimento nella variabile 'shp'Debug.Print shp.TextFrame2.TextRange.TextFinisci seprossimo shpProssima diapositiva corrente

Copia le diapositive selezionate nella nuova presentazione PPT

Per copiare determinate diapositive in una nuova presentazione, selezionare prima le diapositive desiderate nella presentazione esistente e quindi eseguire il codice seguente;

123456789101112131415161718 Dim currentPresentazione come presentazioneDim currentSlide as SlideDim newPresentazione come presentazione'Salva il riferimento alla presentazione correnteImposta currentPresentation = Application.ActivePresentation'Salva il riferimento alla diapositiva correnteImposta currentSlide = Application.ActiveWindow.View.Slide'Aggiungi una nuova presentazione e salva come riferimentoImposta NuovaPresentazione = Applicazione.Presentazioni.Aggiungi' Copia le diapositive selezionateSelezione.Copia'Incollalo in una nuova presentazioneNuovaPresentazione.Diapositive.Incolla

Copia la diapositiva attiva alla fine della presentazione attiva

12345 ' Copia la diapositiva correnteApplication.ActiveWindow.View.Slide.Copy'Incolla alla fineActivePresentation.Slides.Paste

Utili esempi di macro di PowerPoint

Di seguito sono riportati alcuni utili esempi di macro che mostrano come eseguire le attività. Questi dimostreranno anche i concetti sopra descritti.

Cambia diapositiva durante la presentazione

1234567891011 Sub ChangeSlideDuringSlideShow()Dim SlideIndex As IntegerDim SlideIndexPrecedente come numero intero' Cambia la diapositiva corrente nella diapositiva 4 selezionata durante la presentazioneIndice diapositiva = 4' L'indice della finestra della presentazione corrente è 1 nella raccolta SlideShowWindowsSlideIndexPrevious = SlideShowWindows(1).View.CurrentShowPositionSlideShowWindows(1).View.GotoSlide SlideIndexFine sottotitolo

Cambia carattere su tutte le diapositive in tutte le caselle di testo

123456789101112131415 Sub ChangeFontOnAllSlides()Dim mySlide Come diapositivaDim shp come forma'Cambia la dimensione del carattere su tutte le diapositivePer ogni mySlide in ActivePresentation.SlidesPer ogni shp in mySlide.ShapesSe shp.Type = 17 Allora ' msoTextBox = 17' Cambia la dimensione del carattere in 24shp.TextFrame.TextRange.Font.Size = 24Finisci seprossimo shpLa mia diapositiva successivaFine sottotitolo

Cambia maiuscole/minuscole da superiore a normale in tutte le caselle di testo

123456789101112131415 Sub ChangeCaseFromUppertoNormal()Dim mySlide Come diapositivaDim shp come forma'Cambia da maiuscolo a normale per tutte le diapositivePer ogni mySlide in ActivePresentation.SlidesPer ogni shp in mySlide.ShapesSe shp.Type = 17 Allora ' msoTextBox = 17'Cambia maiuscolo in maiuscolo normaleshp.TextFrame2.TextRange.Font.Allcaps = FalseFinisci seprossimo shpLa mia diapositiva successivaFine sottotitolo

Alterna maiuscole e minuscole tra superiore e normale in tutte le caselle di testo

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal()Dim mySlide Come diapositivaDim shp come forma' Alterna tra maiuscole e minuscole per tutte le diapositivePer ogni mySlide in ActivePresentation.SlidesPer ogni shp in mySlide.ShapesSe shp.Type = 17 Allora ' msoTextBox = 17' Alterna tra maiuscole e minuscoleshp.TextFrame2.TextRange.Font.Allcaps = _Non shp.TextFrame2.TextRange.Font.AllcapsFinisci seprossimo shpLa mia diapositiva successivaFine sottotitolo

Rimuovi la sottolineatura dai discendenti

In tipografia, un discendente è la porzione di una lettera che si estende al di sotto della linea di base di un font. Nella maggior parte dei caratteri, i discendenti sono riservati ai caratteri minuscoli come g, j, q, p, y e talvolta f.

Quando sottolinei il testo, non ha un bell'aspetto sotto i discensori. Ecco il codice per rimuovere la sottolineatura da tutti questi caratteri g, j, p, q e y nell'intera presentazione.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders()Dim mySlide Come diapositivaDim shp come formaDim reducers_list As StringFrase soffusa As StringDim x quanto più lungo' Rimuovi le sottolineature dai discendentiscenders_list = "gjpqy"Per ogni mySlide in ActivePresentation.SlidesPer ogni shp in mySlide.ShapesSe shp.Type = 17 Allora ' msoTextBox = 17' Rimuove la sottolineatura dalle lettere "gjpqy"Con shp.TextFrame.TextRangefrase = .TestoPer x = 1 In Len(.Testo)If InStr(descenders_list, Mid$(phrase, x, 1)) > 0 Then.Caratteri(x, 1).Font.Sottolineato = FalseFinisci seAvanti xTermina conFinisci seprossimo shpLa mia diapositiva successivaFine sottotitolo

Rimuovi animazioni da tutte le diapositive

Usa il codice seguente per rimuovere tutte le animazioni impostate in una presentazione.

123456789101112 Sub RemoveAnimationsFromAllSlides()Dim mySlide Come diapositivaDim I As LongPer ogni mySlide in ActivePresentation.SlidesPer i = mySlide.TimeLine.MainSequence.Count To 1 Step -1"Rimuovi ogni animazione"mySlide.TimeLine.MainSequence.Item(i).DeleteAvanti ioLa mia diapositiva successivaFine sottotitolo

Salva presentazione come PDF

Puoi salvare facilmente la presentazione attiva in formato PDF.

1234567891011 Sub SalvaPresentazioneComePDF()Dim pptName As StringDim PDFName As String'Salva PowerPoint come PDFpptName = ActivePresentation.FullName'Sostituisci l'estensione del file PowerPoint nel nome in PDFPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Fine sottotitolo

Trova e sostituisci testo

Puoi trovare e sostituire il testo in Tutte le caselle di testo di tutte le diapositive. Dopo la prima istanza del testo che si desidera trovare (definito da findWhat) è necessario scorrere il comando Trova per trovare altre istanze, se presenti.

123456789101112131415161718192021222324252627282930313233 Sub Trova e sostituisci testo()Dim mySlide Come diapositivaDim shp come formaDim trova What As StringSostituisci attenuato con come stringaDim ShpTxt As TextRangeDim TmpTxt As TextRangefindWhat = "sciacallo"sostituisciCon = "volpe"'Trova e trova e sostituisciPer ogni mySlide in ActivePresentation.SlidesPer ogni shp in mySlide.ShapesSe shp.Type = 17 Allora ' msoTextBox = 17Imposta ShpTxt = shp.TextFrame.TextRange'Trova prima istanza della parola "Trova" (se esiste)Imposta TmpTxt = ShpTxt.Replace(trovaCosa, _Sostituiscicosa:=sostituisciCon, _WholeWords:=Vero)'Trova eventuali istanze aggiuntive della parola "Trova" (se esiste)Fai mentre non TmpTxt non è nienteImposta ShpTxt = ShpTxt.Caratteri(TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Imposta TmpTxt = ShpTxt.Replace(trovaCosa, _Sostituiscicosa:=sostituisciCon, _WholeWords:=Vero)Ciclo continuoFinisci seprossimo shpLa mia diapositiva successivaFine sottotitolo

Esporta diapositiva come immagine

Puoi esportare la diapositiva corrente (o qualsiasi altra diapositiva) come immagine PNG o JPG (JPEG) o BMP.

1234567891011121314 Sub ExportSlideAsImage()Dim imageType As StringDim pptName As StringDim imageName As StringDim mySlide Come diapositiva' Esporta la diapositiva corrente in immagineimageType = "png" 'o jpg o bmppptName = ActivePresentation.FullNameimageName = Left(pptName, InStr(pptName, ".")) & imageTypeImposta mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeFine sottotitolo

Ridimensiona l'immagine per coprire l'intera diapositiva

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide()Dim mySlide Come diapositivaDim shp come forma' Ridimensiona l'immagine alla dimensione intera della diapositiva' Cambia altezza e larghezza della prima forma sulla diapositiva corrente'per adattarsi alle dimensioni della diapositivaImposta mySlide = Application.ActiveWindow.View.slideImposta shp = mySlide.Shapes(1)'''' Sostituisci due affermazioni sopra con'' la seguente dichiarazione se vuoi'' espandi la forma attualmente selezionata'' darà errore se non è selezionato nulla'Imposta shp = ActiveWindow.Selection.ShapeRange(1)con shp.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Sinistra = 0.In alto = 0Termina conFine sottotitolo

Esci da tutte le presentazioni in esecuzione

Se hai più presentazioni aperte contemporaneamente, puoi chiuderle tutte utilizzando la macro di seguito.

1234567 Sub ExitAllRunningSlideShows()Esegui mentre SlideShowWindows.Count> 0SlideShowWindows(1).View.ExitCiclo continuoFine sottotitolo

Automatizzare PowerPoint da Excel

Puoi anche connetterti a PowerPoint tramite altre applicazioni (come Excel e Word). Come primo passo, devi fare riferimento a un'istanza di PowerPoint.

Ci sono due modi per farlo - rilegatura anticipata e rilegatura tardiva .

Apri PowerPoint - Rilegatura anticipata

In "Early Binding" è necessario impostare esplicitamente un riferimento a "Microsoft PowerPoint 16 Object Library" (per MS Office 2022) nel VBE (Visual Basic Editor) utilizzando l'opzione Strumenti->Riferimenti.

123 'Rilegatura anticipataDim pptApp come applicazioneImposta pptApp = Nuova applicazione PowerPoint

Apri PowerPoint - Rilegatura tardiva

In "Late Binding" la variabile dell'applicazione viene dichiarata come un oggetto e il motore VBA si connette all'applicazione corretta in fase di esecuzione.

123 'Rilegatura tardivaDim pptApp come oggettoImposta pptApp = CreateObject("PowerPoint.Application")

Rendi visibile l'applicazione

Dopo aver impostato il riferimento all'applicazione PowperPoint, potrebbe essere necessario renderlo visibile.

1 pptApp.Visible = True

Manipolare PowerPoint

Puoi utilizzare tutti i metodi per manipolare le presentazioni, dall'interno di PowerPoint, descritti sopra da Excel semplicemente aggiungendo il riferimento a PowerPoint creato da te sopra.

Per esempio

1 Presentazioni.Apri ("La mia presentazione.pptx")

deve essere usato così

1 pptApp .Presentations.Open ("La mia presentazione.pptx")

Chiudi l'applicazione

Una volta completato ciò che volevi fare con l'applicazione PowerPoint, devi chiuderla e rilasciare il riferimento.

12 pptApp.EsciImposta pptApp = Niente

Copia da Excel a PowerPoint

Questo codice copierà un intervallo da Excel a PowerPoint:

Nota: È stato mantenuto il più semplice possibile mostrare come un intervallo da Excel può essere copiato in PowerPoint utilizzando VBA.

12345678910111213141516171819 Sub copyRangeToPresentation()'Apri nuova istanza PowerPointImposta pptApp = CreateObject("PowerPoint.Application")Con pptApp'Crea una nuova presentazioneImposta ppt = .Presentazioni.Aggiungi"Aggiungi una diapositiva vuota"Imposta newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12'Copia intervallo dal foglio attivo in ExcelActiveSheet.Range("A1:E10").Copia'Incolla in PowerPoint come immaginenewSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile' Passa a PowerPoint.AttivareTermina conFine sottotitolo

Domande frequenti su PowerPoint VBA

Cosa sono le macro in PPT?

Una Macro è un termine generico che si riferisce a un insieme di istruzioni di programmazione che automatizzano le attività. Le macro PowerPoint (PPT) automatizzano le attività in PowerPoint utilizzando il linguaggio di programmazione VBA.

Come si usa VBA in PowerPoint?

Per utilizzare VBA in PowerPoint, apri l'editor VBA (ALT + F11 o Sviluppatore > Visual Basic).

Come faccio a creare una macro in PowerPoint?

1. Apri l'editor VBA (ALT + F11 o Sviluppatore > Visual Basic)
2. Vai su Inserisci > Modulo per creare un modulo di codice
3. Digita "Sub HelloWorld" e premi Invio
4. Tra le righe "Sub HelloWorld" e "End Sub", digita "MsgBox "Hello World!"
5. Hai creato una Macro!
6. Ora premi "F5" per eseguire la Macro

Scritto da: Vinamra Chandra

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave