Word consente di stabilire collegamenti in un documento a un documento esterno o ad altre posizioni all’interno del documento corrente. Peter sta cercando un modo per contare solo i collegamenti interni all’interno di un documento e si chiede se esiste un modo per farlo.

L’unico modo per farlo è utilizzare una macro per scorrere ogni collegamento ipertestuale nel documento. Fortunatamente, questo può essere fatto facilmente esaminando gli elementi nella raccolta Hyperlinks. Ogni oggetto Collegamento ipertestuale ha una varietà di proprietà che possono essere impostate, a seconda delle caratteristiche del collegamento. Di particolare importanza sono le proprietà Address e SubAddress.

La proprietà Indirizzo (come suggerisce il nome) è l’indirizzo di destinazione del collegamento. Normalmente questo è qualcosa come un URL (come in /), ma potrebbe anche essere il nome di un file su un’unità accessibile dal tuo sistema o un indirizzo e-mail (come in mailto: [email protected]). Poiché la proprietà Indirizzo può avere più scopi, non è possibile verificare specificamente l’esistenza di caratteri indicativi, come il prefisso “http”. Se il prefisso è mancante, il collegamento può ancora essere esterno al documento corrente perché potrebbe fare riferimento a un file diverso nel sistema.

Tuttavia, esiste un caso in cui il campo Indirizzo sarà vuoto, se il collegamento è a un segnalibro all’interno del documento corrente. Se è vuoto, la proprietà SubAddress verrà impostata sul nome del segnalibro a cui si fa riferimento nel collegamento. Ovviamente, se il collegamento è a un segnalibro specifico in un documento diverso, verranno impostate entrambe le proprietà Indirizzo e Sottoindirizzo.

Per avere un’idea delle informazioni memorizzate con ciascun oggetto Hyperlink, dai un’occhiata alla seguente breve macro. Passa attraverso ogni collegamento e visualizza le informazioni su ciascuno.

Sub LinkInfo()

Dim h As Hyperlink     Dim sTemp As String

For Each h In ActiveDocument.Hyperlinks         sTemp = h.TextToDisplay & vbCrLf         sTemp = sTemp & h.Address & vbCrLf         sTemp = sTemp & h.SubAddress         MsgBox sTemp     Next h End Sub

Quindi, il metodo più semplice per determinare il numero di collegamenti interni all’interno di un documento (in altre parole, collegamenti ai segnalibri all’interno del documento corrente) è esaminare la proprietà Indirizzo di ogni oggetto Collegamento ipertestuale.

Se la proprietà è vuota, puoi tranquillamente presumere che il collegamento sia interno.

Sub InternalLinks1()

Dim h As Hyperlink     Dim lInternal As Long

lInternal = 0     If ActiveDocument.Hyperlinks.Count > 0 Then         For Each h In ActiveDocument.Hyperlinks             If h.Address = "" Then lInternal = lInternal + 1         Next hp     End If     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & ActiveDocument.Hyperlinks.Count End Sub

Se si volesse mettere insieme un elenco degli obiettivi effettivi per i collegamenti interni, sarebbe un’aggiunta facile alla macro cercare, all’interno del ciclo For Each, ogni proprietà SubAddress e aggiungerla a ciò che è stato visualizzato alla fine di la macro.

Naturalmente, i collegamenti ipertestuali non si limitano ad apparire esclusivamente all’interno del corpo del documento. Potresti anche avere collegamenti ipertestuali in altri elementi del documento, come intestazioni, piè di pagina, note di chiusura e caselle di testo. La seguente variazione della macro conta tutti i collegamenti che trova in una qualsiasi di queste aree (StoryRanges) nel documento.

Sub InternalLinks2()

Dim h As Hyperlink     Dim lInternal As Long     Dim lTotal As Long     Dim aStory As Range

lTotal = 0     lInternal = 0     For Each aStory In ActiveDocument.StoryRanges         lTotal = lTotal + aStory.Hyperlinks.Count         If aStory.Hyperlinks.Count > 0 Then             For Each h In aStory.Hyperlinks                 If h.Address = "" Then lInternal = lInternal + 1             Next h         End If     Next aStory     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & lTotal End Sub

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.

WordTips è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (12814) si applica a Microsoft Word 2007, 2010 e 2013.