Bradley에는 텍스트 내에 로마 숫자가 많이 포함 된 문서가 있습니다. 그는 수천 개의 로마 숫자를 아랍어로 쉽게 변경할 수있는 방법이 필요합니다.

이것은 어떤 성격의 분야도 아닙니다. 단순히 로마 숫자로 텍스트에 입력됩니다. 그는 아랍어로 쉽게 바꿀 수있는 방법이 있는지 궁금합니다.

불행히도 Word에는 로마 숫자를 아랍어로 변환하는 기능이 없습니다. 원하는 경우 찾기 및 바꾸기를 사용하여 로마 숫자를 검색 할 수 있지만 각 숫자에 대해 개별 검색을 수행해야합니다. 와일드 카드 검색을 사용하여 대문자 로마 숫자로만 구성된 단어를 검색 할 수 있습니다. 이렇게하면 검색이 훨씬 쉬워집니다. “<[CDILMVX] \ {1,}>”(따옴표 제외)를 검색하고 와일드 카드 사용 확인란이 선택되어 있는지 확인하기 만하면됩니다. 다음 찾기를 클릭하면 다음 로마 숫자를 찾은 다음 해당하는 아랍어로 수동으로 변경할 수 있습니다.

변환을 시도하는 또 다른 방법은 매크로를 사용하는 것입니다. 문서의 각 단어를 살펴보고 로마 숫자로 구성된 후보인지 확인하는 매크로를 만들 수 있습니다. 그러나 특히 문서에 로마 숫자로 혼동 될 수있는 두문자어가 포함 된 경우 일부 오 탐지가 발생할 수 있습니다. (예를 들어 신용 카드에 CC를 사용하는 경우 200을 로마 숫자로 간주 할 수 있습니다.)

다음 매크로 집합은 문서의 각 단어를 단계별로 실행하며 단어에 로마 숫자 (I, V, X, L, C, D 및 M) 만 포함 된 경우 사용자에게 매크로가 수사.

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

대문자 I는 텍스트에서 매우 일반적인 단어이기 때문에 매크로는 변환이 수행되어야하는지 결정하기 위해 각 매크로에서 멈추지 않습니다.

그러나 대문자 I가 로마 숫자로만 구성된 긴 단어 (예 : XLVII)의 일부인 경우 변환 후보로 간주됩니다. 매크로는 또한 모든 로마 숫자가 대문자라고 가정합니다.

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (5943)은 Office 365의 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Word에 적용됩니다. Word의 이전 메뉴 인터페이스 :

link : / word-Changing_Roman_Numerals_to_Arabic [로마 숫자를 아랍어로 변경].