2016-04-02 15 views
1

私はSplitで配列に格納するPowerPointのテキストボックスを持っています。 VBAでのテキストの言語を検出する方法はありますか? 実際には英語または中国語のテキストしかないので、テキストが英語でないか、またはUnicodeでないかを検出する別の解決策があると思いますか?VBAでのテキスト言語の検出

+0

テキストの長さと性質について詳しく説明できますか?あなたは母音の存在を確認することができますが、あなたの英語のテキストが本当の英語の単語か、英語の英字だけで構成されているかによって異なります。たとえば、Powerpointのテキストボックスに英語と中国のナンバープレートまたは州コードが含まれている場合、母音を検索することは適切なチェックではないかもしれません。同様に、あなたの中国語のテキストに英語の文字が含まれていることがあると、それも問題になります。 – ThunderFrame

+0

これはあなたを助けることができると思います:[VBAで中国語の文字を取り除く](0120-1710518/strip-chinese-characters-from-a-string-vba) –

+0

それは歌詞です。だから、私はほとんどの場合、タイトルや詩の最初の単語/文字をチェックするだけです。 – Koganei

答えて

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 
0

形状の.TextFrame.TextRange.LanguageIDは、テキストがに設定されているどの言語を教えてくれます。たとえば、米国英語は1033です。それは同様に進値を見て価値がある

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

:ここでは言語IDのリストは、(この場合は十進LCID、右側の列を使用します)があります。右端の2桁はメインの言語コード(たとえば中国語は04)を示し、左端の2桁は特定のロケール(PRC、シンガポール、台湾など)を示しています。

1つのテキストボックスに複数の言語テキストが混在している場合は、各.Runテキストの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 
+1

これは、テキストボックスに1つの言語しか含まれていない場合にのみ機能します。私のテキストボックスには、中国語と英語の両方が含まれることがあります。 私の状況では上記のFlorentのソリューションが最適だと思います。 – Koganei

+1

私の元の答えの編集されたバージョンを参照してください。私は、それが各テキスト行の最初の文字をテストするよりも、より信頼性が高く、より広く役に立つと考えています。 –

+0

ありがとうございます、これは治療法です! 私はあなたの編集された答えを読むまで、実際にラン、文章、段落などについては知りませんでした! – Koganei