• 締切済み

256以上のCSVファイルをEXCELで読むには?

1レコード300項目のCSVがあります。(Webで収集したアンケートです)これを、EXCELで集計しようとしたところ、256項目(列?)までしか読み込めません。私はEXCELしか使うことができませんので、なんとかしてEXCELで読む方法は無いのでしょうか?また、アクセスなどのデータベースだと読むことが出来るのでしょうか?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

以下のコードは、新規のブックにインポートされます。 256 列を越えた分を、次のシートに貼り付けされます。こちらで試験したのは、300列です。論理的には、シートエラーを起こすまでということになるのですが、それは、常識的な範囲でお願いします。 一本しかない横のデータは、無理だと思います。というか、いわゆる時系列データは、Cells(i) で入れていきますね。1シートで、論理的に16,777,216個のデータが扱えることになります。 Alt+ F11 で、Visual Basic 画面を開いて、挿入-標準モジュールで、新しい画面が出たら、以下を貼り付けます。 なるべく、速い貼り付けができるように、以前あったものを改編してみました。しかし、思ったほど、速くなりませんでした。ハングしたかと思われては困るので、インポートは、見えるようにしました。 '--------------------------------------------------------- '<標準モジュールに登録してください> Option Explicit Sub OverColumnCSV()  Dim i As Long, j As Long, k As Long, m As Long, n As Long  Dim rw As Long, col As Long, FNo As Integer  Dim Fname As String  Dim TextLine As String  Dim LineBuf As Variant, arbuf() As Variant  Dim ShtCount As Integer  Dim UB As Long  Dim AddFlg As Integer  '   rw = 1 '最初の行数   Fname = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")   If Fname = "False" Then    Exit Sub   End If   Workbooks.Add '新規ブック作成   With ActiveWorkbook   FNo = FreeFile()   Open Fname For Input As #FNo 'ファイルインポート   Do Until EOF(FNo)    Line Input #FNo, TextLine    '「""」 の除去    TextLine = Application.Substitute(TextLine, """", "")    LineBuf = Split(TextLine, ",")    UB = UBound(LineBuf) '上限の添え字    ShtCount = .Worksheets.Count    'シート数の確認    If j \ 257 > ShtCount Then .Worksheets.Add _    After:=.Worksheets(ShtCount), Count:=(j \ 257) - ShtCount    'ハングと間違えられるので、画面に出す    'Application.ScreenUpdating = False    If UB Mod 255 Then AddFlg = 1    For j = 1 To (UB \ 257) + AddFlg     With .Worksheets(j)      If UB - j * 255 > 0 Then       col = 256       Else       col = UB Mod 256      End If      k = k + col      For m = (j - 1) * 256 To k - 1       ReDim Preserve arbuf(n)       arbuf(n) = LineBuf(m)       n = n + 1      Next m      .Range(.Cells(rw, 1), .Cells(rw, col)).Value = arbuf      ReDim arbuf(0): n = 0     End With    Next j    rw = rw + 1: k = 0: m = 0   Loop   'Application.ScreenUpdating = True   Close #FNo  End With  MsgBox "終了しました", 64 End Sub '---------------------------------------------------------

  • dac203
  • ベストアンサー率43% (92/212)
回答No.1

EXCELの仕様が横が256セルですからそのままでは難しいですね。多分ACCESSならば読めるとは思うのですがEXCELしかなくどうしてもということであれば、面倒ですが下記の方法でカットされたデータを読み込むのはどうでしょうか? 1.まずCSVファイルの拡張子をTXT等に変更します(コピーを作ってやって下さい)。 2.次に上記で拡張子を変更したファイルを開きますと「テキストファイルウィザード」が開きますので「タブやカンマ~」にチェックが入っていることを確認して次へ。 3.「区切り文字」に「カンマ」を追加して次へ。 4.「列のデータ形式」で257列以降を残して削除にチェックを入れて完了。 これでカットされた257列以降分のデータが読み込めるはずです。ただデータの順番のずれには気をつけてください。

関連するQ&A