我完全喪失了處理此過程的更好方法。在Word中使用VBA的文檔中標記特殊字符
以下宏分析文檔中的每個字符,並且如果ASCII值高於255,它將對其應用特殊字符樣式 - 有些針對特定語言,或者只是針對特定語言的「lang」,如果它不是這些字符的一部分語言。
該宏可以很好地工作,但在長文檔中,需要花費很長的時間來處理。例如,我剛剛在每個頁面上處理了一個147頁(單間隔)的文檔,其中包含幾行希臘文,花了40分鐘,在Word 2016 for Windows中(相反,完全相同的文件和相同的代碼需要2分鐘在Mac上)。
有什麼我可以做的下面的代碼來優化這個Windows?
感謝您的任何建議。 約翰
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
鏈接中的方法isn'我需要什麼,因爲它假定你已經知道你正在尋找的角色。我試圖識別文檔中使用的任何特殊字符。如果它落入某些常見範圍,我會標記特定的語言,但否則所標識的任何東西都會得到一個通用的字符樣式。 – johnwangel