Cambio de números romanos a árabe (Microsoft Word)
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]
.