在VBA中检测文本语言

时间:2016-04-02 04:55:49

标签: vba powerpoint powerpoint-vba

我在PowerPoint中有一个文本框,我将其存储到一个包含Split的数组中。 有没有办法检测文本在VBA中的语言是什么? 实际上只会有英文或中文文本,所以我想另一种解决方案是检测文本是不是英文,还是不是Unicode?

2 个答案:

答案 0 :(得分:1)

应该可以检查其中一个字符是否为中文:

Function IsChiness(text As String) As Boolean
  Dim c&, i&
  For i = 1 To Len(text)
    c = AscW(Mid$(text, i, 1))
    If c >= &H4E00& And c <= &H9FFF& Then
      IsChiness = True
      Exit Function
    End If
  Next
End Function

答案 1 :(得分:0)

形状的.TextFrame.TextRange.LanguageID将告诉您文本设置的语言。例如,美国英语是1033。这里有一个语言ID列表(在这种情况下使用Decimal LCID,右栏):

https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx?f=255&MSPPError=-2147217396

值得查看十六进制值。最右边的两位数字为您提供主要语言代码(例如,中文为04),最左边的两位数字标识特定的语言环境(PRC,新加坡,台湾等)。

如果您可能在单个文本框中包含混合语言文本,请查看每个.un文本的LanguageID属性。例如,选择一个形状,请尝试:

Dim oRng As TextRange
Dim x As Long

With ActiveWindow.Selection.ShapeRange(1).TextFrame.TextRange
    For x = 1 To .Runs.Count
        Debug.Print .Runs(x).LanguageID
    Next
End With