【问题标题】:Set specific font size for Hebrew characters in Word in VBA在 VBA 中为 Word 中的希伯来语字符设置特定字体大小
【发布时间】:2021-12-23 21:49:07
【问题描述】:

我需要将这个为 Word 2007 制作的代码修改为 Word XP。我需要在文档中设置希伯来文文本的大小。它是中欧单词与希伯来语的混合体。我需要的是更大尺寸的希伯来文文本。这仅包含基本的希伯来语字符,没有元音。非希伯来字符可以是英语或捷克(http://www.biega.com/special-char.html),希伯来字符是从 1488 到 1514。

但我无法运行在答案中发送至此处Flag special characters in document using VBA in Word 的代码,因为我收到错误(范围?)未选择对象。

Sub test()
    'Options.DefaultHighlightColorIndex = wdNoHighlight
    'Range.HighlightColorIndex = wdNoHighlight ' used for testing to clear Highlight

    Dim r As Range, t As Double: t = Timer
    Application.ScreenUpdating = False

    For Each r In Range.Characters ' For Each r In Range.Words is somehow about 2 times slower than .Characters
        checkRange r
    Next

    Application.ScreenUpdating = True
    Debug.Print Timer - t; Range.Words.Count; Range.Characters.Count; Range.End ' " 3.15625  8801  20601  20601 "
End Sub

Sub checkRange(r As Range)
    Dim b() As Byte, i As Long, a As Long
    b = r.Text ' converts the string to byte array (2 or 4 bytes per character)
    'Debug.Print "'" & r & "'"; r.LanguageID; r.LanguageIDFarEast; r.LanguageIDOther

    For i = 1 To UBound(b) Step 2            ' 2 bytes per Unicode codepoint
        If b(i) > 0 Then                     ' if AscW > 255
            a = b(i): a = a * 256 + b(i - 1) ' AscW
            Select Case a
                Case &H1F00 To &H1FFF: r.HighlightColorIndex = wdBlue: Exit Sub ' Greek Extended
                Case &H3040 To &H30FF: r.HighlightColorIndex = wdPink: Exit Sub ' Hiragana and Katakana
                Case &H4E00 To 40959: r.HighlightColorIndex = wdGreen: Exit Sub ' CJK Unified Ideographs

                Case 55296 To 56319: ' ignore leading High Surrogates ?
                Case 56320 To 57343: ' ignore trailing Low Surrogates ?

                Case Else: r.HighlightColorIndex = wdRed: Debug.Print Hex(a), r.End - r.Start ' other
            End Select
        End If
    Next
End Sub

所以我只需要选择大小并使其适用于 Word XP。有什么帮助吗?

注意: 整个文档和希伯来语字符是从左到右书写的(当我在在线键盘上输入希伯来语时,它们是 RTL,但在处理 Word 后它们是 LTR。但这不是问题,因为我已经复制/粘贴它们以显示正确的希伯来词。所以它们实际上在 LTR 中。

【问题讨论】:

    标签: vba ms-word hebrew


    【解决方案1】:

    错误是因为您没有指定要处理的对象的范围。

    For Each r In Range.Characters
    

    需要符合以下任一条件

    For Each r In Selection.Range.Characters
    

    或作为

    For Each r In ActiveDocument.Range.Characters
    

    您可以通过查找Range 的在线帮助来自己回答这个问题

    注意: 逐字符处理文档将是一个非常漫长的过程。如果您要处理的字符可以通过语言 id 识别,则可以大大加快处理速度。

    【讨论】:

    • 非常感谢。结果非常酷。我不明白如何简化这一点,例如将希伯来语单词分组到某种对象,然后做一些格式化的东西。当然,这不是主要问题的重点,但也许你知道我应该在谷歌中寻找的术语来找到一些代码。
    • @JohnBoe - 唯一可以真正帮助您的是是否已为文档的各个部分设置了语言。在这种情况下,您可以使用查找和替换来做您想做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多