Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


28022 / 76736 ←次へ | 前へ→

【54026】Re:ExcelVBAの配列の開放について
回答  neptune  - 08/2/20(水) 15:17 -

引用なし
パスワード
   ▼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全部に使える事に気が付いて
   名前と説明を変更

0 hits

【54000】ExcelVBAの配列の開放について hiro 08/2/19(火) 21:31 質問
【54002】Re:ExcelVBAの配列の開放について neptune 08/2/19(火) 22:11 回答
【54010】Re:ExcelVBAの配列の開放について hiro 08/2/20(水) 0:51 質問
【54026】Re:ExcelVBAの配列の開放について neptune 08/2/20(水) 15:17 回答
【54035】Re:ExcelVBAの配列の開放について Hirofumi 08/2/20(水) 20:15 回答
【54038】Re:ExcelVBAの配列の開放について neptune 08/2/20(水) 22:17 発言
【54164】Re:ExcelVBAの配列の開放について hiro 08/2/27(水) 10:53 お礼

28022 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free