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: