ブラッドリーは、テキスト内に多くのローマ数字を含む文書を持っています。彼は、これらの数千のローマ数字をアラビア語に変更する簡単な方法を必要としています。

これらはいかなる性質のフィールドでもありません。それらは単にローマ数字としてテキストに入力されます。彼は、それらをアラビア語に相当するものに簡単に変更する方法があるかどうか疑問に思います。

残念ながら、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_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(5943)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス:

link:/ word-Changing_Roman_Numerals_to_Arabic [ローマ数字をアラビア語に変更]