[[20170622110043]] 『csvファイルをエクセルで開く』(まぜそば) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『csvファイルをエクセルで開く』(まぜそば)

はじめまして

単純な作業と思うのですが私ではうまく過去ログ
も見つけられずマクロもよくわからないので投稿させてもらいました。

とあるログデータ(csvファイル)を開いてエクセルで
加工しようと思っています。ファイルは1個です。

どうやら100万件以上あるらしく全部表示して
開くことができません。

これを100万件ごとにシートを分けて表示して
データを全部表示したいです。

ご教授お願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 自分だったらこうするってだけなので参考程度に

 方法その1
 CSV分割するフリーソフトがあるので、それを使って複数ファイルに分割、ばらばらに読み込む。

 方法その2
 ワードで開いて複数ファイルに分割する。ばらばらに読み込む

 方法その3
 アクセスで取り込む。テキトーにエクセルで読み込む。

(1111) 2017/06/22(木) 16:44


 こんな方法も
 速度についての保証はしません。

 Sub test()
    Dim a, n As Long, ii As Long, t As Long
    Dim myCon As Object, myRS As Object
    Const myRows As Long = 1000000
    Const fn As String = "c:\test.csv"  '<-- 要変更
    Set myCon = CreateObject("ADODB.Connection")
    With myCon
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Extended Properties") = "Text;HDR=NO"
        .ConnectionString = Left$(fn, InStrRev(fn, "\"))
        .Open
        Set myRS = .Execute("SELECT * FROM " & Mid$(fn, InStrRev(fn, "\") + 1))
        With myRS
            ReDim a(1 To myRows, 1 To .Fields.Count)
            Do Until .EOF
                n = n + 1
                For ii = 0 To .Fields.Count - 1
                    a(n, ii + 1) = .Fields(ii)
                Next
                If n = UBound(a, 1) Then
                    t = t + 1
                    Sheets(t).Cells(1).Resize(UBound(a, 1), UBound(a, 2)).Value = a
                    ReDim a(1 To myRows, 1 To UBound(a, 2))
                End If
                .MoveNext
            Loop
        End With
    End With
    If n > 0 Then t = t + 1: Sheets(t).Cells(1).Resize(n, UBound(a, 2)).Value = a
    Set myCon = Nothing: Set myRS = Nothing
End Sub
(seiya) 2017/06/22(木) 16:58

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.