2017-05-12 15 views
0

時々、いくつかの中国語の文字を含むファイルをダウンロードしています。明らかにStringはそれらを認識しません。文字列内の特殊文字の扱い

私は、次のVBA言うことができる方法上の任意のアイデア:ファイル名にいくつかの未知の文字がある場合

は、それらを削除し、のみ通常の文字を含むファイル名の最初の部分を保持します。

実際には、これらの特殊文字はそれぞれ「?」で置き換えられます。

しかし、には「?」が表示されても、Msgbox InStr(1, AttachmentName, "?")は0を返します。

私は以下のことをしましたが、上記のように、 "?"それは条件を満たしたことがないので、

If InStr(1, AttachmentName, "?") <> 0 Then 
    AttachmentName = Mid(AttachmentName, 1, InStr(1, AttachmentName, "?") - 1) & "unknown characters " 
End If 

答えて

4

は、このサブ文字列からすべての漢字を削除...本当にそこMsgBoxではなく上に表示されます。

Private Sub RemoveChinese() 

    Dim Fun As String 
    Dim Txt As String 
    Dim Ch As String 
    Dim n As Integer 

    Txt = Selection.Text 

    For n = 1 To Len(Txt) 
     Ch = Mid(Txt, n, 1) 
     If Asc(Ch) = AscW(Ch) Then Fun = Fun & Ch 
    Next n 

    MsgBox Fun 
End Sub 

ポイントは、ラテン語の文字を書くことだけを取るのに対し、中国語の文字が2バイトで表現されていることです。実際にそれらを描写できるようにするには、コンピュータに中国語のサポートがインストールされている必要があります。したがって、認識できない文字のために?が挿入されました。

+0

ありがとう! – Seb

+0

将来、この問題が発生した場合に備えて、変数名を少しわかりやすくすることをお勧めします。あなたが行っていることを知っていても、あなたの例の論理に従うのは難しいです。なぜなら、読者は 'Txt'から' Ch'の 'Fun'を知りませんからです。 –