初めまして。
テキストファイル内のデータ、仮に一行が
aaaaa bbb ccc ddddd eeeeeeeeeee
であるとして、これらをExcelへ読み込む際、ブランクでセルを分けたい
のですが、どのようにすれば良いのでしょうか?
Excel のマクロの記録を使ってみて下さい。
一応、試したところ、
次のようなコードで大丈夫ではないでしょうか。
Workbooks.OpenText _
FileName:="D:\MyWork\aaa.txt", _
DataType:=xlDelimited, _
Space:=True
エクセルにデータを送るのはやったことないですが、
ブランクで区切って配列に保存するならわかるんで以下を参照してください。
前にも同じような事答えたんで。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200206/02060005.txt
CSVで読みこんでみては?
「ファイルを開く」からテキストファイルを選択してブランクで区切るように設定してやればできると思うのですが。
皆様回答ありがとうございます。
説明が不十分で申し訳ありません。
マクロを用いて、一括処理を行いたいのです。
とろ様の方法で、うまく処理する方法も考えたのですが、思いつきませんでした。
新規ファイルではなく、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で
分けられれば良いと思っています。
引き続き、ご意見頂けれるとうれしいです。
よろしくお願い致します。
マクロって事は、エクセルのマクロのことですよね?
以前書いたものは、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を追加して
同じ事をやれば出来ると思います。
oku様
度々回答頂きましてありがとうございました。
希望通りのものができました。
ご指摘の通り、TABをスペースに変えていませんでした。
まだまだ勉強不足だと痛感致します。
本当にありがとうございました。
ツイート | ![]() |