Controllo del formato dei riferimenti incrociati (Microsoft Word)
Stephen ha chiesto se è possibile controllare il formato dei riferimenti incrociati inseriti da Word. Quando inserisce un’etichetta e un numero come la Tabella 1 o la Figura 12, vuole l’etichetta in minuscolo (tabella, figura) e uno spazio unificatore tra l’etichetta e il numero.
Non è possibile controllare questo tipo di formattazione dei riferimenti incrociati in Word. Ovviamente puoi cambiare manualmente i riferimenti incrociati dopo averli inseriti, ma ogni volta che aggiorni i campi verrà utilizzato il formato originale scelto da Word per loro. Ci sono un paio di soluzioni basate su macro che puoi provare. La prima soluzione cambierà i codici di campo effettivi utilizzati per il campo:
Sub FieldRefChanges1() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then 'add format switch with lowercase option to field codes oFld.Code.Text = oFld.Code.Text & "\* lower " 'updates the field results to display the new format oFld.Update End If Next oFld Next oStoryRng End Sub
La macro include un paio di cicli For nidificati. Il primo passa attraverso ogni storia nel documento e il secondo passa attraverso ogni campo in ogni storia. Viene quindi utilizzata un’istruzione If per assicurarsi che il campo sia un campo REF (il tipo utilizzato per i riferimenti incrociati) e che il risultato del campo sia composto da due o meno parole (come nella Tabella 1 o nella Figura 12).
Se questi criteri vengono soddisfatti, la macro apporta una modifica al codice di campo effettivo, aggiungendo l’opzione che determina la visualizzazione del campo in minuscolo.
Ci sono un paio di inconvenienti in questa macro. Innanzitutto, se lo esegui più volte, l’opzione \ * inferiore viene aggiunta più volte ai campi REF. In secondo luogo, la macro non modifica lo spazio nei risultati del campo in uno spazio unificatore.
Per superare entrambi i problemi, è sufficiente modificare la macro in modo che automatizzi il processo manuale da eseguire per modificare i risultati della macro.
Sub FieldRefChanges2() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field Dim sTemp As String Dim J As String For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then sTemp = oFld.Result.Text sTemp = LCase(sTemp) J = InStr(sTemp, " ") sTemp = Left(sTemp, J - 1) & Chr(160) & _ Mid(sTemp, J + 1, Len(sTemp) - J) oFld.Result.Text = sTemp End If Next oFld Next oStoryRng End Sub
Questa macro è essenzialmente la stessa della precedente, tranne per il fatto che funziona strettamente con il testo del risultato per il campo. Il testo viene assegnato alla variabile sTemp, che viene quindi convertita in minuscolo. La posizione dello spazio è determinata e viene sostituita con uno spazio unificatore. Il risultato viene quindi inserito nuovamente nel testo del risultato per il campo.
_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 (141) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia a nastro di Word (Word 2007 e più tardi) qui: