Перевод римских цифр на арабские (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 — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (12509) применим к Microsoft Word 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Word (Word 2007 и позже) здесь:
link: / wordribbon-Changing_Roman_Numerals_to_Arabic [Изменение римских цифр на арабские]
.