テキストファイルをスペースも有効に読み込みたいが?

Question 39.5 Excel VBA Borad (掲示板)より Previous Next
はじめまして。OpenTextでテキストファイルのデータ(固定長)を読込みたいのですが、うまくいきません。
どなたか教えていただけないでしょうか。

○マクロ
    Workbooks.OpenText Filename:=wFileName, StartRow:=1, _
        DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2))
○現象
15byteのテキストデータをひとつのセルに取込みたいのですが、スペースが 2byte以上続くと1 byte削除されてしまうようです。例えば、

『^^^^^^^^^^^^^^^』          ※『^』は半角スペース1文字です。
『1^^45AB^^^FGアイウ』
『^23^^^^CDE^^^^^』 の 3件のテキストファイルを読み込んだ場合は、

『』              → Len=0
『1^^45AB^^^FGアイウ』 → Len=15
『23^^^^CDE』       → Len=9 と なってしまいます。

3件全てのデータを Len=15 の固定長で読込みたいのですが、どのようにしたらよいのですか?
よろしくお願いします
Answer   2001.10.22 long
例示のテキストファイルなら、下記のマクロのように Line Input # ステートメントで読み込めると思います。
Sub テキストファイルの行全体を読み込む()
    Worksheets("Sheet1").Activate       'ワークシートをアクティブにする
    Columns("A:A").Clear                'A列をすべてクリアする
    ファイル名 = "wFileName.txt"        'ファイル名を指定する
    Open ファイル名 For Input As #1     '指定のファイルを開く
    行 = 0                              '行カウンタをゼロにする
    Do While Not EOF(1)                 'ファイルの最後に達していなければ繰り返す
        Line Input #1, バッファ         '行全体を読み込んで文字型変数に代入する
        行 = 行 + 1                     '行カウンタの値に 1加える
        Cells(行, 1) = バッファ         '読み込んだ文字列をセルにセットする
    Loop                                '繰り返す
    Close #1                            'ファイルを閉じる
End Sub
Comment   Copyright (C) 2001.10.23 Yoshioh Nagai
Line Input # ステートメント

Line Input # ステートメントは、キャリッジリターンか改行コードの直前までのすべての文字を読み込みます。キャリッジリターンと改行コードは読み飛ばされます。キャリッジリターンとは chr(13)、改行コードとは chr(13) + chr(10) で、パソコンでは[Enter]キーに相当します。

構文
school     
Line Input # filenumber, varname

構文の中で斜体の部分は、指定項目です。 指定項目の filenumber には、Openステートメントで指定したファイル番号を、必ず指定します。
varname には、バリアント型(Variant)または文字列型(String)の変数の名前を必ず指定します。

【参考ページ】  Openステートメント、 EOF関数


 

Excel VBA Macro