[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.