現在テキストファイルからデータと取り出す作業をしています。
テキストファイルは、
1○○○○
2○○○○
3○○○○
〜
10○○○○
11○○○○
という風に数字の横に言葉が入っています。
先頭についている数字だけ取得したいのでLeftB(TEXT,2)としました。
これは一桁の数字が全角で、2桁の数字が半角であるためです。
For i = 1 to 20
Number = LeftB(TEXT,2)
Next i
↑このようにしました。
1〜9までは良いのですが10〜20が文字を一つしか取ってきてくれません。
全角の文字の1と半角文字の10は同じ2バイトだと思ったのですが・・・。
LeftBの使い方が間違っているのでしょうか。
それをやるなら以下のように修正ですね。
Number = LeftB(TEXT,2)
↓
Number = StrConv(LeftB(StrConv(TEXT, vbFromUnicode), 2), vbUnicode)
VB6のStringは内部的にUnicodeで扱っていますので、
全角でも半角でも1文字2バイトです。
ですので、StrConv関数で一旦SJISにしてLeftBした後、
再度StrConv関数でUnicodeに戻してやる必要があります。
ありがとうございます。
よねKENさんの言うように修正した所うまく取れました。
Unicodeを一旦SJISにしなければ駄目だったのですね。
まだまだ勉強が足りませんでした。
よねKENさん。
ありがとうございました。
ツイート | ![]() |