このプロセスをより効果的に処理するためには完全に迷っています。WordのVBAを使用しているドキュメントに特殊文字をフラグする
次のマクロは、ドキュメントのすべての文字を分析し、ASCII値が255より大きい場合は、特定の言語用の特殊文字スタイルを適用します。特定の言語用のものもあれば、それらの一部でない場合は 'lang'言語。
マクロは正常に動作しますが、長いドキュメントでは処理に時間がかかります。たとえば、私はちょうど各ページでギリシャ語のいくつかの行で147ページ(単一スペースの)文書を処理し、WindowsのWord 2016で40分かかりました(対照的に、正確に同じファイルと同じコードは2分かかりましたMacの場合)。
これをWindows用に最適化するために、以下のコードに何かできることはありますか?
ありがとうございます。何らかの理由Range.DetectLanguage
については ジョン
Sub CheckSpecialCharacters()
'This macro looks for any characters above 255 and tags them with the appropriate existing language character.
Dim ch As Range: Set ch = ActiveDocument.Characters(1)
Do
Counter = Counter + 1
ch.Select
myValue = AscW(Selection.Text)
If myValue > 255 Then
If (myValue > 8190 And myValue < 8225) Or (myValue > 288 And myValue < 381) Or (myValue > 701 And myValue < 704) Or myValue = 730 Then
'Ignores Curly Quotes and Transliteration punctuation
ElseIf (myValue > 7935 And myValue < 8192) Or (myValue > 879 And myValue < 1024) Then
'Greek Characters get langgrk applied
Selection.Expand unit:=wdWord
Selection.Style = "langgrk"
ElseIf (myValue > 1423 And myValue < 1535) Then
'Hebrew Characters get langheb applied
Selection.Expand unit:=wdWord
Selection.Style = "langheb"
ElseIf myValue > 7679 And myValue < 7830 Then
'Extended transliteration characters get langtrans applied //OLD VALUES// (myValue > 288 And myValue < 381) Or (myValue > 701 And myValue < 704)
If HCCP = True Then Selection.Expand unit:=wdWord
Selection.Style = "langtrans"
ElseIf (myValue > 19968 And myValue < 40959) Then
'Chinese Characters get langchin applied
Selection.Expand unit:=wdWord
Selection.Style = "langchin"
ElseIf (myValue > 19968 And myValue < 40917) Then
'Japanese Characters get langjap applied
Selection.Expand unit:=wdWord
Selection.Style = "langjap"
Else
If HCCP = True Then Selection.Expand unit:=wdWord
Selection.Style = "lang"
End If
End If
DoNext:
End Sub
書式で検索して置換するhttp://www.excelforum.com/word-programming-vba-macros/997078-best-way-to-find-replace-unicode-characters.html – Slai
リンクのアプローチは、あなたが探している文字をすでに知っていることを前提としているので、私が必要とするものはありません。私は文書で使用されている特殊文字を特定しようとしています。特定の共通範囲に該当する場合は、特定の言語にタグを付けますが、それ以外の場合は、一般的な文字スタイルが適用されます。 – johnwangel