|
▼hiro さん:
こんにちは
>ファイルサイズは、1つのCSVで7〜8MBです。
>CSVから直接変数に取り込むとはどういう処理をすればいいのでしょうか(汗
愛想の悪い回答者に当たったのかな^ ^;;
いつもそうではありません。自分でやってない人にはそうですけどね。
と、いうことで、今日は特別大サービス。久しぶりに書きました。
ササッと書きましたので、ほとんど検証はしてません。そのおつもりで試してください。
一応動作確認はしてます。・・・程度です。
改造するなり、お好きにどうぞ。
Sub t2()
Dim lineCount As Long
Dim sLines() As String, sPath As String
sPath = "E:\Data\Office\Excel\order.csv" 'パスは自分の環境に合わせる事
lineCount = GetTextFileData(sPath, sLines)
'ここでsLines()にすべての行が格納されているから、各要素を","で、更に分割して使用する
'split関数使用すると楽チン
'処理
End Sub
'/////////////////////////////////////////////////////////////
'textファイルを読み込み、行毎に配列変数に入れて返す
'-------------------------------------
'引数
'pfPath :ファイルのフルパス
'pLines() :文字列型の要素数無定義の配列変数(これに全データを入れて返す)
'-------------------------------------
'戻り値:成功時、0以上の行数。失敗時には-1を返す
'/////////////////////////////////////////////////////////////
Public Function GetTextFileData(pfPath As String, pLines() As String) As Long
Dim lCount As Long
Dim sBuf As String, sLines() As String
Dim bytBuf() As Byte
Dim fNum As Long, sCount As Long, i As Long
lCount = 0
On Error GoTo ErrHandler
sCount = FileLen(pfPath)
ReDim bytBuf(sCount)
fNum = FreeFile()
Open pfPath For Binary As #fNum
Get #fNum, , bytBuf
Close #fNum
sBuf = StrConv(bytBuf, vbUnicode)
pLines = Split(sBuf, vbCrLf)
lCount = UBound(pLines)
GetCSVFileData = lCount
Exit Function
ErrHandler:
MsgBox Err.Number & " : " & Err.Description
Reset
GetCSVFileData = -1
End Function
#意味を理解してから使ってくださいね。全部Helpに載っているコマンドですから。
15:15 編集:UPした関数がcsvでなく、textfile全部に使える事に気が付いて
名前と説明を変更
|
|