ローマ数字をアラビア語に変更する(Microsoft Word)
ブラッドリーは、テキスト内に多くのローマ数字を含む文書を持っています。彼は、これらの数千のローマ数字をアラビア語に変更する簡単な方法を必要としています。
これらはいかなる性質のフィールドでもありません。それらは単にローマ数字としてテキストに入力されます。彼は、それらをアラビア語に相当するものに簡単に変更する方法があるかどうか疑問に思います。
残念ながら、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 [ローマ数字をアラビア語に変更]
。