Участник:Al Silonov/Макрос для этимологии
Материал из Викисловаря
На всякий случай — может, кому-нибудь пригодится: макрос для MS Word, выполняющий первичную обработку этимологии, выдранной из словаря Фасмера. Для установки макроса в Word надо:
- вызвать меню «Сервис/Макрос/Макросы», в строке Имя ввести etymol и нажать кнопку «Создать». Появится редактор Visual Basic и в нем заготовка типа:
Sub etymol()
'
' etymol Макрос
'
End Sub
- Всю эту заготовку, что стоит между Sub и End Sub, надо заменить текстом, предлагаемым мною (начальная и конечная строки у меня и в заготовке, естественно, совпадают, поэтому можно оставить тамошние а между ними вставлять собственно код).
- Когда подпрограмма таким образом примет нужный вид, надо дать команду File/Save Normal и закрыть окно Visual Basic.
- C этих пор в Ворде можно будет вызывать этот макрос. Я поместил его на панель инструментов в виде кнопки, а можно привязать к нему клавишный код (меню «Сервис/Настройка/Клавиатура», в Категориях выбрать «Макросы», в списке макросов — etymol, после чего ввести в поле «Новое сочетание клавиш» что-нибудь типа Ctrl+Shift+E — короче, любую комбинацию, какую не жалко и какая ассоциируется со словом этимология.
Теперь я копирую кусок из Фасмера с сайта покойного Старостина, вставляю в пустое окно Ворда, в конце ставлю точку и пробел, а затем нажимаю кнопку вызова макроса. То, что после этого получается, уже несу в Викисловарь. А вот и текст макроса:
Sub etymol()
ActiveDocument.Range.Select
With Selection.Find
.Text = "^l^l"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindStop
.Format = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "чеш."
.Replacement.Text = "чешск."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "словен."
.Replacement.Text = "словенск."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "лтш"
.Replacement.Text = "латышск"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "цслав."
.Replacement.Text = "церк.-слав."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "слвц"
.Replacement.Text = "словацк"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "Further etymology:"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "блр"
.Replacement.Text = "белор"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "гот."
.Replacement.Text = "готск."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ", род."
.Replacement.Text = " (род."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "в.-н."
.Replacement.Text = "в.-нем."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ", вин."
.Replacement.Text = " (вин."
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
newstr = "{{#if:{{{1|}}}|{{#switch:{{{1}}}| да= |en= {{OED}}}}{{#switch:{{{1}}}|la=|{{etym-lang|{{{1|}}}|la}}}}}}<noinclude>[[Категория:Шаблоны этимологии|XXXX]]</noinclude>"
Selection.InsertAfter (newstr)
End Sub