当前位置: 首页 > 知识库问答 >
问题:

在VBA中为Word中的希伯来语字符设置特定字体大小

潘志国
2023-03-14

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

但我无法在答案中使用Word中的VBA运行“代码发送到此处”标记文档中的特殊字符,因为我得到了错误(范围?)未选择对象。

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。

共有1个答案

慕意致
2023-03-14

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

For Each r In Range.Characters

需要符合以下条件之一:

For Each r In Selection.Range.Characters

或作为

For Each r In ActiveDocument.Range.Characters

您只需查找Range

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

 类似资料:
  • 我正在用AJAX向某个服务器发送文件,比如: 代码运行良好,但当我将希伯来文文件名放在头部时,我会得到错误: 错误扫描FileTypeError:无法对“XMLHttpRequest”执行“Set RequestHeAder”:值不是有效的ByteString Header:不起作用。

  • 我在一个单词段落中找到了一个起始字符和结束字符,但就我而言,我无法确定如何设置包含这些字符的范围。以下是我所拥有的内容的摘录: 使用起始字符和结束字符的值,如何设置包含该字符串的范围?我做了很多尝试,但都没有成功。 Microsoft“使用范围”页面上的说明包含以下代码: 我在样本的第一行(“设置rngTemp…”)中没有收到任何错误,这似乎与微软的样本非常相似。但当我尝试时: 我得到"编译错误:

  • 问题内容: 我正在尝试发送带有希伯来语查询字符串参数的GET请求。当控制器收到请求时,该参数为乱码。我添加了“ org.springframework.web.filter.CharacterEncodingFilter”,但是它并没有改变任何东西。 请告知如何解决。 更新:这是请求。 web.xml 罗伊 问题答案: 事实证明哪种用途 覆盖此请求正文中使用的字符编码的名称 。在读取请求参数或使用

  • Adobe 亚洲语言书写器 借助 Adobe 亚洲语言书写器,您可以使用中东和南亚语言创建内容。您可以键入或混合键入阿拉伯语、希伯来语、英语和其他语言。 您可以在“段落”面板菜单(窗口 > 段落 > 面板菜单)中的可用书写器之间进行选择。例如,您可以使用中东和南亚语言单行书写器或中东和南亚语言逐行书写器。 有关 Illustrator 中支持的其他亚洲语言的更多信息,请参阅适用于亚洲语言文字的书写

  • 启用中东语言功能 若要在 Photoshop 界面中显示中东文字选项,请执行以下操作: 选取“编辑”>“首选项”>“文字”(Windows) 或“Photoshop”>“首选项”>“文字”(Mac OS)。 在“选取文本引擎选项”部分中,选取“中东”。 单击“确定”,并重新启动 Photoshop。 选取“文字”>“语言选项”>“中东语言功能”。 文本方向 要创建阿拉伯语和希伯来语内容,您可以将默

  • 我试图找出如何设置整个word文档的字体样式,完全是通过选择菜单中预设的样式来完成的: 因为我已经制作了一个宏来逐字转换整个文档,所以我试图用它来完成的是更改所有预设磁贴(正常、无间距、标题、标题1等)。)以匹配现有的预设,而不是旧的预设(旧字体)。 这可能吗?我要修改什么对象来实现这一点?