Bradley tiene un documento que tiene, dentro del texto, muchos números romanos. Necesita una forma sencilla de cambiar estos miles de números romanos a arábigos.

Estos no son campos de ninguna naturaleza; simplemente se escriben en texto como números romanos. Se pregunta si hay una manera de cambiarlos fácilmente a sus equivalentes árabes.

Desafortunadamente, no hay ninguna función en Word que convierta los números romanos al árabe. Si lo desea, puede simplemente usar Buscar y reemplazar para buscar números romanos, pero tendría que hacer una búsqueda individual para cada uno. Puede usar una búsqueda con comodines para buscar una palabra que consista enteramente en números romanos en mayúscula, lo que facilitaría la búsqueda. Todo lo que necesita hacer es buscar «<[CDILMVX] \ {1,}>» (sin las comillas) y asegurarse de tener seleccionada la casilla de verificación Usar comodines. Al hacer clic en Buscar siguiente, se ubica el siguiente número romano y, a continuación, puede cambiarlo manualmente a su equivalente árabe.

Otra forma de intentar realizar la conversión es con una macro. Puede crear una macro que examine cada palabra de su documento e intente determinar si es candidata a que consta de números romanos. Sin embargo, puede obtener algunos falsos positivos, especialmente si su documento contiene acrónimos que podrían confundirse con números romanos. (Por ejemplo, si utiliza el acrónimo CC para tarjeta de crédito, podría considerarse el número romano de 200).

El siguiente conjunto de macros recorrerá cada una de las palabras en un documento y si la palabra contiene solo números romanos (I, V, X, L, C, D y M), se le preguntará al usuario si la macro debe convertir numerales.

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

Dado que una I mayúscula es una palabra muy común en el texto, las macros no se detendrán en cada una de ellas para determinar si se debe realizar una conversión.

Sin embargo, si la I mayúscula es parte de una palabra más larga que consta solo de números romanos (como XLVII), entonces se considera un candidato para la conversión. Las macros también asumen que todos sus números romanos están en mayúsculas.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Esta sugerencia (5943) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365. Puede encontrar una versión de esta sugerencia para interfaz de menú anterior de Word aquí:

link: / word-Changing_Roman_Numerals_to_Arabic [Cambio de números romanos a árabe].