• ベストアンサー

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バイト 文字が含まれる ようになり、どのように処理を行えばファイルを読み込んで全角文字に変換できる のかが分かりません。 初心者的なご質問かもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

はずしている可能性が大ですが、、、 固定長なら 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)

回答No.2

普段ファイルからの読み込みをしないので、全く自信がないですが、 普通、固定長のバイナリファイルならランダムアクセスで 処理しませんか?(間違ってるかもしれませんが) 例えば、 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バイト単位で読み込む理由があるのですか?

関連するQ&A