Cambiare i numeri romani in arabo (Microsoft Word)
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: