- ベストアンサー
Excelのtxt読み込み
Excelでtxtを読み込んでいるのですが、 行数が256以上あるため全て読み込んでくれません。 そこで読み込むときに何行おきに読み込むような方法はありますでしょうか? また、Excel以外で読み込むことが出来るようなソフトはありますか?(Originのような) よろしくお願いします
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > 256列以上 Excel でも Access でもフィールド数(列数)が多いデータはパフォーマンス が悪くなります。また、現実的な目に見える問題として、多くのアプリで読み 込めないという問題がありますよね。 なるべくなら設計段階から見直した方が良いと思いますよ。 で本題ですが、VBA を使うのが簡単なのでは? > この結果の中で必要なデータは1列目、7列目、13列目と5列置きなので、 OpenText メソッドを使って、名前付き引数 FieldInfo に間引く列、読み込む 列という情報を入れた配列を渡せばよろしいかと。こんな感じで。 何区切りなのか本文に書かれてませんので、一応タブまたはカンマ区切りに してますが。 Sub Sample() Dim fi As XlColumnDataType Dim nCol As Long Dim def_(1 To 360) As Variant ' // 5行置きに読み込むように各列のデータ形式を示す配列を作成 ' // xlSkipColumn を指定するとスキップ列となる For nCol = 1 To 360 If (nCol Mod 6) = 1 Then fi = xlGeneralFormat Else fi = xlSkipColumn End If def_(nCol) = Array(nCol, fi) Next Workbooks.OpenText Filename:="C:\test.txt", _ Origin:=932, _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ Comma:=True, _ Tab:=True, _ FieldInfo:=def_ End Sub
その他の回答 (7)
- mitarashi
- ベストアンサー率59% (574/965)
#4です。 KenKenSPさん御提示の様な機能があるのですね。勉強になります。 折角作ったので、原始的なコードですがアップしておきます。テキストファイルへのADO接続もやってみましたが、案の定256番目のフィールドからは、SQLで抽出条件を与えるところでエラーになりました。 Sub test() Dim FSO, buf As String, oneLine As Variant Dim destRange As Range Dim i As Long Const delimiterChar As String = "," Set FSO = CreateObject("Scripting.FileSystemObject") Set destRange = Range("a1") With FSO.GetFile(ThisWorkbook.Path & "\" & "Sample.txt").OpenAsTextStream Do While Not .AtEndOfLine buf = .ReadLine oneLine = Split(buf, delimiterChar) For i = 1 To 360 Step 6 destRange.Offset(0, Int(i / 6)).Value = oneLine(i - 1) Next i Set destRange = destRange.Offset(1, 0) Loop .Close End With Set FSO = Nothing End Sub
お礼
ありがとうございます この機会にVBを勉強したいと思います とても助かりました
- imogasi
- ベストアンサー率27% (4737/17069)
>行数が256->列数256として エクセル2007の利用は出来ないのですか。質問では、エクセルのバージョンぐらい書くこと。 ファイルを作った人に、ファイルを、列を2グループに分けたデータを作ってこらえないのですか。普通は作るほうでエクセルで利用のことが念頭にあれば、256列を考慮すると思うが。 >txtを読み込んでいるのですが 拡張子はtxtでも、内容はCSVファイルなのかな。 でないと質問のようなことを考える場合は無い。A列だけに読み込まれるように思うが。 この辺もしっかり勉強して質問してほしい。 >何行おきに読み込む 何列おきに、の間違いとして プログラムが組めれば簡単です。操作ではまず不可能と思います。 >、Excel以外で読み込むことが出来るようなソフトはありますか VBAやVBが少しできれば、簡単なプログラムで出来るので、 また特殊な用途なので、市販しても、マーケットが無い・売れない、フリーでも世間に出すのにはばかられ内容である、と思います。 まあフリーソフトの紹介も種類も色々あるので探すほか無いでしょう。 データ数が少なければ(1000ぐらい以下?)、人手で所定のところへ改行を入れて、別名保存して、エクセルに読みこませ、エクセルで1行おきのシートを作ることは出来るかもしれないと推測する。 しかし分かれると致命的に不便・処理が難しいこともありえる。 本質問のことが実現しても、その先は、不便だったり・処理が難しいことはないよそうなのかな。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
>256列以上の間違いでした。 これなら簡単ですね 読み込む時のウイザードで区切らずに1行を1セルに入れれば全てを読み込めます。 後は縦横を入れ替えて加工することもできます。
- mitarashi
- ベストアンサー率59% (574/965)
調べている内に#3さんとかぶってしまいまいた。 参考までに、1セルに表示できる、入れられる文字数の制限です。 http://support.microsoft.com/kb/211580/ja さて、本題ですが、行数が255行以下なら、配列に読み込んで、縦横逆にシートに貼り付ける手があるかもしれません。 行数が多い場合、ACCESSも255フィールドが限界なので、SQL Server(最大1024フィールド)等でも使うしか無いのでは。 いずれにしても読み込んだデータを、どうやって処理したいかで、取るべき方法は変わって来ると思いますので、そこを明確にして、質問されては如何でしょうか。
お礼
ありがとうございます 500行×360列の解析結果がtxtで出てくるプログラムをまわしており、 その結果をグラフにしたいのですが、皆さんがおっしゃるとおり読み込めません。 この結果の中で必要なデータは1列目、7列目、13列目と5列置きなので、 5列置きごとに全ての結果を読み込めると助かるのです。
- dodemoii
- ベストアンサー率59% (769/1282)
こんにちは エクセルの行数の制限は ワークシートのサイズが 65,536 行、256 列(1,048,576 行、16,384 列 ---2007) なので、別の要因ですね。 それとも一つのセルに入れようとしているのですか? では。
お礼
皆さん、ご回答ありがとうございます 256行ではなくて、256列以上の間違いでした。 すいません
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
Excel2000で試しましたが1行130文字×3,000行でも問題なく読み込めましたよ。 バージョンとか総文字数とかもう少し情報を書いてください。
- oyaoya65
- ベストアンサー率48% (846/1728)
テキストファイルを開いておいて EXCELの貼り付けるセルも用意しておいて 複数行ずつ、数回に分けてコピペ(コピー・アンド・ペースト)で 貼り付けていったらどうでしょうか?
お礼
ありがとうございます!! こんなことがしたかったのです。 とても助かりました