PowerPoint - Modificare tutti i collegamenti ipertestuali nelle slides - VBA

Riepilogo
Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: PowerPoint(2010/2013)
Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare PowerPoint e sono forniti solo a scopo dimostrativo.

 

Situazione

Ci troviamo nella necessità di modificare parte del testo dei collegamenti ipertestuali per tutte le slides della nostra presentazione. Tipico caso quando cambia la path della cartella che contiene i files di appoggio alla presentazione o parte del link di un sito web di riferimento. Se slides e collegamenti ipertestuali sono molti, ci troviamo a dover selezionare slide per slide i vari hyperlinks: un lavoro ripetitivo e che può portare ad errori.

 

La macro commentata che trovate qui sotto, fa tutto *il lavoro sporco* con un unico click:

 

Public Sub m()
    'dichiaro le variabili
    Dim s As Slide
    Dim h As Hyperlink
    'ciclo le slides
    For Each s In ActivePresentation.Slides
        'ciclo gli hyperlinks della slides
        For Each h In s.Hyperlinks
            'cambio parte della stringa di connessione
            '(in questo caso sostituisco C:\Test con C:\Prova)
            h.Address = Replace(h.Address, _
                "C:\Test", "C:\Prova")
        Next
    Next
    'Set a Nothing delle variabili oggetto
    Set s = Nothing
    Set h = Nothing
End Sub

 

Il metodo Replace si aspetta alcuni argomenti. Quelli che interessano qui sono:

  • la stringa completa da modificare
  • la parte di testo che modificheremo
  • il nuovo testo 

 

Nel caso specifico sostituisco nella stringa di connessione la parte C:\Test con C:\Prova. Il resto della strina rimane identico. 

Volendo modificare contemporaneamente il testo visualizzato sulla slide, possiamo aggiungere la seguente riga di codice all'interno del ciclo For più interno:

 

h.TextToDisplay = "Quello che volete appaia"

 

sostituendo a "Quello che volete appaia" il vostro testo. Nel caso in precedenza fosse mostrato l'indirizzo completo dell'hyperlink e vogliate modificarlo con il nuovo, sempre per l'esempio precedente:

 

h.TextToDisplay = Replace(h.TextToDisplay, _
                "C:\Test", "C:\Prova")

 

PowerPoint e il VBA

Per inserire la macro nel progetto ed eseguirla:

  • Premere assieme ALT+F11 per visualizzare l'editor del vb di PowerPoint
  • Inserisci-->Modulo
  • Nel foglio bianco che compare (il modulo di codice) inserite il codice
  • ALT+F11 e tornate in PowerPoint
  • Premere assieme ALT+F8 per visualizzare le macro
  • Selezionare la macro da eseguire
  • Pulsante Esegui

 

NOTA. PowerPoint non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb. E’ una cosa da tenere sempre presente quando si distribuiscono file (non le presentazioni, ma file con il progetto) con contenuti ritenuti delicati.

 

Informazioni articolo forum


Ultimo aggiornamento settembre 11, 2018 Visualizzazioni 920 Si applica a:

Forse è un po' tardi per chiedere una integrazione, dopo 4 anni!!
Comunque ci provo: avrei bisogno di un codice simile a quello proposto nell'articolo, che però scorra tutti i collegamenti a excel del pptx e li interrompa.

Abbiamo una presentazione con molti collegamenti e spesso ci chiedono di avere slides singole che vorremmo inviare senza collegamento alle tabelle excel, ma con office 2013 l'interruzione da menu FILE/Modifica collegamenti a file non da più la possibilità di selezionare più collegamenti insieme (suggerimenti al riguardo?).

Grazie, ciao

Stefano

 

buongiorno sono interessato a capire come funziona la macro segnalata.

mi spiego … nel mio file PowerPoint vorrei riuscire a cambiare solo la path e le cartelle di indirizzo in quanto i nomi dei file collegati che utilizzo nelle presentazioni sono diversi.

grazie

Paolo