Bradley ha un documento che ha, all’interno del testo, molti numeri romani. Ha bisogno di un modo semplice per cambiare queste migliaia di numeri romani in arabo.

Questi non sono campi di nessuna natura; sono semplicemente digitati nel testo come numeri romani. Si chiede se c’è un modo per cambiarli facilmente con i loro equivalenti arabi.

Sfortunatamente, non esiste alcuna funzione in Word che converta i numeri romani in arabo. Potresti, se vuoi, usare semplicemente Trova e sostituisci per cercare i numeri romani, ma dovresti fare una ricerca individuale per ciascuno di essi. È possibile utilizzare una ricerca con caratteri jolly per cercare una parola composta interamente da numeri romani maiuscoli, il che renderebbe la ricerca un po ‘più semplice. Tutto quello che devi fare è cercare “<[CDILMVX] \ {1,}>” (senza virgolette) e assicurarti di avere la casella di controllo Usa caratteri jolly selezionata. Quando si fa clic su Trova successivo, viene individuato il numero romano successivo e sarà quindi possibile modificarlo manualmente nell’equivalente arabo.

Un altro modo per provare a fare la conversione è con una macro. È possibile creare una macro che esamini ogni parola nel documento e provi a determinare se è un candidato per essere composto da numeri romani. Tuttavia, potresti ottenere alcuni falsi positivi, in particolare se il tuo documento contiene acronimi che potrebbero essere confusi come numeri romani. (Ad esempio, se usi l’acronimo CC per carta di credito, questo potrebbe essere considerato il numero romano per 200.)

La seguente serie di macro passerà attraverso ciascuna delle parole in un documento e se la parola contiene solo numeri romani (I, V, X, L, C, D e M), all’utente viene chiesto se la macro deve convertire il numeri.

Sub ConvertRoman()

Dim wrdX     Dim wrd As String     Dim tstSW As Boolean     Dim J As Long

For Each wrdX In ActiveDocument.Words         wrd = UCase(Trim(wrdX))

If wrd = "" Or wrd = "I" Or wrd = vbCr Then             tstSW = False         Else             tstSW = True         End If         For J = 1 To Len(wrd)

If InStr("MDCLXVI",Mid(wrd, J, 1)) = 0 Then                 tstSW = False                 Exit For             End If         Next J

If tstSW Then             wrdX.Select             Selection.MoveLeft unit:=wdCharacter, _               Count:=Len(wrdX) - Len(wrd), _               Extend:=wdExtend             J = MsgBox("Convert " & wrd & " to Arabic", vbYesNoCancel)

If J = vbCancel Then Exit Sub             If J = vbYes Then Selection.TypeText Text:=RomanToArabic(wrd)

End If     Next wrdX End Sub
Function RomanToArabic(Rm As String) As String     Dim J As Long     Dim ab As Long     Dim cc As Long     Dim dd As Long

ab = 0     Rm = Trim(Rm)

J = 1     Do         cc = GetValue(Mid(Rm, J, 1))

dd = GetValue(Mid(Rm, J + 1, 1))

If cc < dd Then             ab = ab + dd - cc             J = J + 1         Else             ab = ab + cc         End If         J = J + 1     Loop Until J >= Len(Rm)

If J = Len(Rm) Then         ab = ab + GetValue(Mid(Rm, J, 1))

End If     RomanToArabic = Trim(Str(ab))

End Function
Function GetValue(ss As String) As Long     Dim Cde()

Dim Cvalue()

Dim J As Long

Cde = Array("M", "D", "C", "L", "X", "V", "I")

Cvalue = Array(1000, 500, 100, 50, 10, 5, 1)



For J = 0 To 6         If ss = Cde(J) Then             GetValue = Cvalue(J)

Exit Function         End If     Next J     GetValue = 999999 End Function

Poiché una I maiuscola è una parola molto comune nel testo, le macro non si fermeranno su ciascuna di esse per determinare se è necessario eseguire una conversione.

Tuttavia, se la I maiuscola fa parte di una parola più lunga composta solo da numeri romani (come XLVII), allora è considerata un candidato per la conversione. Le macro presumono anche che tutti i tuoi numeri romani siano maiuscoli.

_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 (12509) 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: