我完全丧失了处理此过程的更好方法。在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