0
키릴 문자를 라틴 문자로 변환하는 VBA에서 매크로를 만들고 싶습니다.
현재, 나는라틴계 키릴 문자 대체
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Ш" 'cyrillic letter
.Replacement.Text = "Sh" 'latin letter
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
를 사용하고 모든 문자를 위해 그것을 반복합니다. 이 방법이 효과적입니다. 그러나 50 번 이상 Selection.Find.Execute를 호출하기 때문에 큰 문서에서는 매우 느리게 작동합니다.
Q : 더 빨리 해결할 수 있습니까? 예를 들어 , 잃게 형식없이
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^$" 'Finds any letter
.Replacement.Text = "\\1" ' ---> There I don't know how retrieve
' found letter
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
아니면 그것이 다른 방법 (등 Application.ActiveDocument.Characters 또는 Application.ActiveDocument.Words)로 해결할 수있는 뭔가?
찾기를 사용하거나 문서의 문자를 반복, 빨리되는 테스트해야하는 것입니다. ActiveDocument.Characters의 For Each c와 같이 문서의 각 문자를 "걷는"것과 같은 작업을 수행 할 수 있어야합니다. 그러나 문제는 문자와 그 대체물을 식별하는 방법으로 남아 있습니다. 당신이 키릴 문자에 대한 유니 코드 번호를 알고 있다면 해당 번호를 테스트하고 해당 번호를 "검색"할 수 있습니다. 예를 들어 "sh"문자 : Chr (c.Text) = 1064 If '여기에'sh '를 반환하는 함수를 호출합니다.이 함수는 문서에 씁니다. –
나는 ActiveDocument.Characters를 걷는 방법을 알고 있지만 내용을 바꾸지는 모른다. –
개체 c : c.Text = "sh"를 사용하여 이전 주석의 스 니펫에 빌드하십시오. 그것에 대해 생각하면 여러 문자로 한 문자를 바꿀 때 Word에 혼동을 줄 수 있습니다. 작업하는 동안 원본을 변경하는 대신 배경에 두 번째 문서를 작성하는 것이 좋습니다 ... –