- ベストアンサー
ExcelVBAでの2バイト文字の入力方法
ExcelVBAを用いてファイルを入力し、そこから項目毎にデータを分割して各セルへ値を設定するという処理を作っています。 [ファイルイメージ(1レコードのみ)] 12345678900000000△△△△△・・・ ←項目1→←項目2→←項目3→・・・ 今までは、ファイルをバイナリアクセスモードでOpenし、その後に For i = 1 to n Get #FileNum, i, b next i というように、バイト位置(Count)をずらしながら、1バイト単位に変数bに入れて、 処理を行ってました。 これまではファイル内のデータが全て1バイト文字だったのですが、全角2バイト 文字が含まれる ようになり、どのように処理を行えばファイルを読み込んで全角文字に変換できる のかが分かりません。 初心者的なご質問かもしれませんが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はずしている可能性が大ですが、、、 固定長なら OpenText メソッドで普通に開くのではダメですか? c:\test.txt に↓こんなデータがあったとして 111あいうえお11111 222かきくけこ22222 333さしすせそ33333 ↓こんな感じ Sub Test() Workbooks.OpenText _ Filename:="C:\test.txt", StartRow:=1, _ DataType:=xlFixedWidth, FieldInfo:= _ Array(Array(0, 2), _ Array(3, 2), _ Array(13, 2)) End Sub
その他の回答 (1)
- taisuke555
- ベストアンサー率55% (132/236)
普段ファイルからの読み込みをしないので、全く自信がないですが、 普通、固定長のバイナリファイルならランダムアクセスで 処理しませんか?(間違ってるかもしれませんが) 例えば、 Type Rec_Type No As Long Code As String * 5 Name As String * 10 End Type Sub test() Dim Rec As Rec_Type Dim FlName As String Dim n As Long Dim dat As String FlName = "c:\TEST.ZZZ" n = FileLen(FlName) / Len(Rec) Open FlName For Random As #1 Len = Len(Rec) For i = 1 To n Get #1, i, Rec With Rec dat = .No & Chr(13) dat = dat & .Code & Chr(13) dat = dat & .Name End With MsgBox dat Next i Close #1 End Sub これなら2バイト文字でも拾ってきます。 固定長では、無いのでしょうか? 1バイト単位で読み込む理由があるのですか?