テキストファイルのデータを直接シートに取り込む

 これで、営業社員の入力した発注情報を「発注情報.txt」に集めることができました。今度は事務員用のシートにテキストファイルを取り込んでみましょう。
 手順としては、まず、Excelのシートに図18のように書式を設定し、データを取り込む準備をします。次に「データ」メニューから[外部データの取りこみ]-[テキストファイルのインポート]を選択し、「発注情報.txt」を指定します。すると、Excel 97でもおなじみの「テキストファイルウィザード」画面が表示されます(図19-1)。Write#ステートメントで書き出したデータ「発注情報.txt」は、すべて「,(カンマ)」で区切られているのでウィザードの2/3の画面で図19-2のように「カンマ」を指定します。あとは変更する個所は特にないので[完了]ボタンを押します(図19-3)。最後に「データのインポート」ダイアログが表示されますので、取り込みの開始位置を指定します。ここで[OK]を押せば完了です(図20)。

図18:書式を設定する

図19-1:「テキストファイルウィザード」1/3
図19-2:「テキストファイルウィザード」2/3
図19-3:「テキストファイルウィザード」3/3

図20:データを貼り込む位置を指定して完了

 ここでひとつ注意しておきたい点があります。Excel 2000では、テキストデータを取り込むと、行・列の幅が図21のように取り込んできたデータに合わせて自動調整されます。このため、あらかじめ作成しておいたレイアウトを崩さないようにするためにはテキストを取り込む際に、「データのインポート」ダイアログの[プロパティ]ボタンを押します。その中の「データのレイアウト」という項目があるので、「列の幅を調整する」のチェックをはずしてください。すると、元の書式のままデータのみを取り込むことができます。ケースによってうまく使い分けるようにしましょう。

図21:取り込んだテキストデータに合わせて、行・列が自動調整される

 「テキストファイルのインポート」機能も実際は先ほどのWebクエリと同じ、「QueryTableオブジェクト」の機能のうちのひとつです。上記の一連の処理をコードで書くと、

    Sub GetTextData()
        With ActiveSheet.QueryTables.Add( _
        Connection:= "TEXT;¥¥Jimu¥発注¥発注情報.txt", _
        Destination:=Range("A1"))
            .Name = "発注情報"
            .AdjustColumnWidth = False
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileCommaDelimiter = True
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
            .Refresh BackgroundQuery:=False
        End With
    End Sub
 と表わすことができます。WEBクエリのときと同様、コードで設定するか、手動で設定するかはケースによって使い分けてみるのがいいでしょう。