Excel VBA質問箱 IV

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

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


25639 / 76735 ←次へ | 前へ→

【56434】Re:巨大なCSVファイルの読み込みに関して
お礼  アヒルペンギン  - 08/6/17(火) 13:01 -

引用なし
パスワード
   返信ありがとうございます。さきほどのソースで読み込みを行いファイル名等の
変更も行ったあと実行したのですが、なぜか
  j = 1
  For i = 0 To UBound(vD)
    vX(Int(i / 256) + 1)(j, i Mod 256) = vD(i)
  Next
の部分でエラーが起こります。インデックスが有効範囲にありませんというエラーなのですが何が原因でしょうか?たびたび申し訳ありませんが回答頂けるとうれしいです。


▼Yuki さん:
>▼アヒルペンギン さん:
>>Excelだと、横方向にはFFまでしか項目を読む事ができないようですが今回取り扱っているCSVは横方向に2000以上項目があります。シートを分割してもかまわないのでどうにかExcelで読み込む必要があるのですが、VBAでそういった処理をする事が可能でしょうか?先人の方々教えていただけると幸いです。
>
>XL2007だったら一つのシートでいけますね。
>数万行のデータだったらすごく時間がかかりそうです。
>
>Sub TEXT_CSV2K_READ()
>  Dim FSO   As Object  ' File System Obj
>  Dim FsoTS  As Object  ' FSO.TextStream Obj
>  Dim File  As Object  ' FSO.file Obj
>  Dim strFN  As String  ' File Name
>  Dim eLN   As Long   ' CSVファイルの行数
>  Dim CLM   As Long   ' シート数
>  Dim strD  As String  ' 一行データ
>  Dim vD   As Variant ' 一行分配列
>  Dim vA()  As Variant ' シート用配列
>  Dim vX()  As Variant ' セル用
>  Dim i    As Long
>  Dim j    As Long
>  
>  strFN = "D:\Excel\Test.csv"
>  
>  Set FSO = CreateObject("Scripting.FileSystemObject")
>  
>  Set FsoTS = FSO.OpenTextFile(strFN, 8)
>  eLN = FsoTS.Line - 1
>  FsoTS.Close
>  
>  Set File = FSO.GetFile(strFN)
>  Set FsoTS = File.OpenAsTextStream(1)
>  
>  ' 前処理
>  strD = FsoTS.ReadLine
>  
>  vD = Split(strD, ",")
>  If UBound(vD) > 255 Then
>    CLM = Int(UBound(vD) / 256) + 1
>  Else
>    CLM = 1
>  End If
>  ' シート不足分追加
>  If Worksheets.Count < CLM Then
>    Worksheets.Add Count:=CLM - Worksheets.Count
>  End If
>
>  ReDim vX(1 To CLM)
>  ReDim vA(1 To eLN, UBound(vD) - 1)
>  
>  For i = 1 To CLM
>    vX(i) = vA
>  Next
>  
>  j = 1
>  For i = 0 To UBound(vD)
>    vX(Int(i / 256) + 1)(j, i Mod 256) = vD(i)
>  Next
>  
>  '本処理
>  Do While Not FsoTS.AtEndOfStream
>    DoEvents
>    strD = FsoTS.ReadLine
>    vD = Split(strD, ",")
>    j = j + 1
>    For i = 0 To UBound(vD)
>      vX(Int(i / 256) + 1)(j, i Mod 256) = vD(i)
>    Next
>  Loop
>  
>  ' シートに貼り付け
>  For i = 1 To CLM
>    DoEvents
>    With Worksheets(i)
>      .Cells.ClearContents
>      .Range("A1").Resize(j, 256).Value = vX(i)
>    End With
>  Next
>  FsoTS.Close
>  Set FsoTS = Nothing
>  Set FSO = Nothing
>End Sub

0 hits

【56405】巨大なCSVファイルの読み込みに関して アヒルペンギン 08/6/16(月) 15:36 質問
【56406】Re:巨大なCSVファイルの読み込みに関して kanabun 08/6/16(月) 15:56 発言
【56408】Re:巨大なCSVファイルの読み込みに関して アヒルペンギン 08/6/16(月) 16:22 回答
【56432】Re:巨大なCSVファイルの読み込みに関して Yuki 08/6/17(火) 10:58 発言
【56434】Re:巨大なCSVファイルの読み込みに関して アヒルペンギン 08/6/17(火) 13:01 お礼
【56438】Re:巨大なCSVファイルの読み込みに関して Yuki 08/6/17(火) 15:50 発言
【56440】Re:巨大なCSVファイルの読み込みに関して アヒルペンギン 08/6/17(火) 16:28 お礼
【62580】Re:巨大なCSVファイルの読み込みに関して kosuke 09/8/1(土) 16:42 質問
【62581】Re:巨大なCSVファイルの読み込みに関して kanabun 09/8/1(土) 19:27 発言
【62582】Re:巨大なCSVファイルの読み込みに関して kosuke 09/8/2(日) 10:52 発言
【62585】Re:巨大なCSVファイルの読み込みに関して kanabun 09/8/2(日) 19:15 発言
【62587】Re:巨大なCSVファイルの読み込みに関して kanabun 09/8/2(日) 23:22 発言
【62589】Re:巨大なCSVファイルの読み込みに関して kosuke 09/8/3(月) 10:09 発言
【62590】Re:巨大なCSVファイルの読み込みに関して kanabun 09/8/3(月) 11:00 発言
【62591】Re:巨大なCSVファイルの読み込みに関して kosuke 09/8/3(月) 11:40 発言
【62592】Re:巨大なCSVファイルの読み込みに関して kanabun 09/8/3(月) 12:00 発言
【62593】Re:巨大なCSVファイルの読み込みに関して kosuke 09/8/3(月) 13:07 お礼

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