• ベストアンサー

Excel2003で列数制限以上のCSVファイルを読み込む方法

初めて投稿いたします。 仕事で使うCSV形式のテキストファイルをExcel2003に読み込ませようとしています。1つのデータ群が数値50個の連続データで構成されていますが、改行情報が入っていないため、データ群が多くなると列数制限(256列まで)でファイル自体が単純に読めない状態です。 データ群毎に改行すれば、1枚のワークシートで読み込めると思います(下記イメージ)。何とか頑張ってVBAマクロで作成したいと思います。 参考になるサンプルマクロとかをご存じないでしょうか?CSVエディタとの併用も考えましたが、Excelだけで完結できればありがたいです。 どうぞよろしくお願い申し上げます。 [現在のデータ形式イメージ] a1,a2,…,a50,b1,b2,…,b50,c1,c2,…,c50,d1,d2,…,d50,……… (1行で連続したデータ) [変更後のデータ形式イメージ] a1,a2,…,a50 b1,b2,…,b50 c1,c2,…,c50 d1,d2,…,d50 e f … (1行あたり50列のデータ)

質問者が選んだベストアンサー

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

Sub 分割q() Dim inpdata As String Dim i As Integer Dim j As Long Open "E:\inpcsv.csv" For Input As #1 Do Until EOF(1) j = j + 1 For i = 1 To 50 Input #1, inpdata Cells(j, i) = inpdata If EOF(1) Then Exit For Next Loop Close #1 End Sub ActiveなシートのA1から50列ずつデータが入ります。

ka314159
質問者

お礼

早速の回答、ありがとうございました。 Doループを使う方が分かりやすいですね。 うまく処理できました。 自分がまだまだ勉強不足なのが分かりました。 改めて御礼申し上げます。

その他の回答 (1)

回答No.2

>(1行で連続したデータ) これが保障されているなら、 Sub macro1() Dim alldata As Variant, i As Long alldata = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(<csvファイルのパス>).ReadAll, ",") For i = 0 To UBound(alldata) Cells(i \ 50 + 1, i Mod 50 + 1).Value = alldata(i) Next i End Sub

ka314159
質問者

お礼

早速の回答、ありがとうございました。 このような方法もあるのですね。 動作を確認してみたら、データが読み込まれた最終行の一番最後のセルだけが、他のセルと比べて表示書式が変わってしまうようです(セル内に改行が入ったり、表示が左詰めになったり)。 でも、こんな方法があるとは自分がまだまだ勉強不足なのが分かりました。 改めて御礼申し上げます。

専門家に質問してみよう