テキストファイルからExcelへ読み込むには?

解決


KEEP  2002-12-14 00:46:11  No: 76601

初めまして。
テキストファイル内のデータ、仮に一行が
aaaaa bbb ccc ddddd eeeeeeeeeee
であるとして、これらをExcelへ読み込む際、ブランクでセルを分けたい
のですが、どのようにすれば良いのでしょうか?


とろ  2002-12-14 01:58:53  No: 76602

Excel のマクロの記録を使ってみて下さい。

一応、試したところ、
次のようなコードで大丈夫ではないでしょうか。

Workbooks.OpenText _
        FileName:="D:\MyWork\aaa.txt", _
        DataType:=xlDelimited, _
        Space:=True


oku  URL  2002-12-14 11:58:28  No: 76603

エクセルにデータを送るのはやったことないですが、
ブランクで区切って配列に保存するならわかるんで以下を参照してください。
前にも同じような事答えたんで。

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200206/02060005.txt


琅珎  2002-12-16 23:45:21  No: 76604

CSVで読みこんでみては?
「ファイルを開く」からテキストファイルを選択してブランクで区切るように設定してやればできると思うのですが。


KEEP  2002-12-17 01:04:09  No: 76605

皆様回答ありがとうございます。
説明が不十分で申し訳ありません。
マクロを用いて、一括処理を行いたいのです。

とろ様の方法で、うまく処理する方法も考えたのですが、思いつきませんでした。
新規ファイルではなく、ActiveWorkBookへ読み込みを行いたいのです。

oku様の方法を試してみたのですが、うまく分かれてくれません。
oku様の回答の中のメッセージボックスへ吐き出す部分を、

        For intIndex = 0 To UBound(strArray)
            'MsgBox strArray(intIndex)
            Cells(a, 1) = strArray(intIndex)
            a = a + 1
        Next intIndex
と変更したのですが、ダメなのでしょうか?

ちなみに読み込みたいテキストファイル内は
1111111 aaa12.9999 aaabbbcccdddeeefg
3332211 bbb10.8888 zzzxxxdddvvvffrth
などというようになっており、数千行存在します。
また、テキストファイルも複数存在し、出来れば1つのWorkBookでSheetで
分けられれば良いと思っています。

引き続き、ご意見頂けれるとうれしいです。
よろしくお願い致します。


oku  URL  2002-12-17 09:29:52  No: 76606

マクロって事は、エクセルのマクロのことですよね?
以前書いたものは、TAB区切りになっているものを
配列に保存しているやり方なので、TABをスペースに変えられましたか?
あとCellsは1から始まるものなので、
上記のFor〜Nextは0から始まるので、エラーが出るはずです。
Offsetに変えてください。一応簡単なやり方を書きました。

    Dim intIndex    As Integer
    Dim intRow      As Integer
    Dim intFileNo   As Integer
    Dim strText     As String
    Dim strArray()  As String
    
    intFileNo = FreeFile
    Open "C:\a.txt" For Input Access Read As intFileNo
    Do Until EOF(intFileNo)
        Line Input #intFileNo, strText
        strArray = Split(strText, " ")
        For intIndex = 0 To UBound(strArray)
            Range("A1").Offset(intRow, intIndex) = strArray(intIndex)
        Next intIndex
        intRow = intRow + 1
    Loop
    Close intFileNo

これを複数ファイル存在した場合、Sheetを追加して
同じ事をやれば出来ると思います。


KEEP  2002-12-17 18:07:18  No: 76607

oku様
度々回答頂きましてありがとうございました。
希望通りのものができました。
ご指摘の通り、TABをスペースに変えていませんでした。
まだまだ勉強不足だと痛感致します。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加