Excel VBA質問箱 IV

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

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


2063 / 76734 ←次へ | 前へ→

【80315】csvファイルの読み込み大量データ
質問  煮っまった  - 19/1/24(木) 10:52 -

引用なし
パスワード
   大量のcsvファイルを読み込む処理で以下の処理を利用していますが

Application.GetOpenFilenameファイルを読み込む画面が出る前にエクセルが
固まある時があります。普通に動くときもります。

件数が多いことから発生するものなのか?
何かの記述が抜けているものなのか?
どなたか教えてもらえませんか?

csvファイルを読み込むのが早くで助かる処理なので活用したい


Public Sub Samp1()

  Dim vFile As Variant
  Dim ffn As Integer
  Dim sBuf As String
  Dim vA As Variant, iP(1) As Long
  Dim i As Long, j As Long, k As Long
  Const CROWSZ As Long = 50000 ' 1回の書き出し行数

  vFile = Application.GetOpenFilename("CSV Files(*.csv), *.csv")
  If (VarType(vFile) <> vbString) Then Exit Sub

  vA = InputBox("開始行,終了行", "取込み範囲指定", "10,1000010")
  If (Len(vA) = 0) Then Exit Sub
  vA = Split(vA, ",")
  If (UBound(vA) < 1) Then Exit Sub
  iP(0) = Int(Val(vA(0)))
  iP(1) = Int(Val(vA(1)))
  If (iP(0) > iP(1)) Then Exit Sub
  If (iP(1) - iP(0) + 1 > Rows.Count) Then Exit Sub
  ReDim vA(1 To CROWSZ, 1 To 1)

  Application.ScreenUpdating = False
  Worksheets.Add
  ffn = FreeFile()
  Open vFile For Input As #ffn
  i = 1
  While ((Not EOF(ffn)) And (i < iP(0)))
   Line Input #ffn, sBuf
   i = i + 1
  Wend
  k = 1
  j = 0
  While ((Not EOF(ffn)) And (i <= iP(1)))
   If (j >= CROWSZ) Then
     Cells(k, "A").Resize(CROWSZ).Value = vA
     k = k + CROWSZ
     j = 0
   End If
   j = j + 1
   Line Input #ffn, vA(j, 1)
   i = i + 1
  Wend
  If (j > 0) Then Cells(k, "A").Resize(j).Value = vA
  Close #ffn

  If ((j > 0) Or (k > 1)) Then
   With Columns("A")
     .TextToColumns .Cells(1), xlDelimited, Comma:=True
   End With
  Else
   Application.DisplayAlerts = False
   ActiveSheet.Delete
   Application.DisplayAlerts = True
  End If
  Application.ScreenUpdating = True
End Sub

7 hits

【80315】csvファイルの読み込み大量データ 煮っまった 19/1/24(木) 10:52 質問[未読]
【80328】Re:csvファイルの読み込み大量データ よろずや 19/1/24(木) 21:34 発言[未読]
【80348】Re:csvファイルの読み込み大量データ 煮詰まった 19/1/28(月) 9:32 お礼[未読]

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