エクセル2003 CSVファイルの取り込み速度向上について
CSVファイルを取り込んで、必要なデーターを処理しているのですが、
CSVのファイルのデーター取り込み速度を上げるのを、皆様のご意見
を参考にさせていただきたいと思います。
VBAの構成は以下の構成でつくりました
(1)ファイルの選択
↓
(2)CSVファイルの中身の確認
↓
(3)CSVファイルの取り込み、エクセルのセルに展開
と言う構成になっております。
で、(3)の所が結構時間を要するのですが、処理が早くなるコードの
書き方とかありましたら、参考にさせていただきたいなぁ~と
思っております。自分的に思っているのは(2)の所は時間をそれほど
要しないので、取り込みよりエクセルのセル展開の処理の方で時間
をくっているように感じるので、その辺を上手くできないのかな?
とか思ったりしてます。まだ、VBAを勉強し始めて半年足らずなので
皆さんの意見などを参考にさせていただけましたと思っております。
宜しくお願いいたします。
実際のコードは以下に記します。
__________________________________
Option Explicit
Option Base 1
Dim myTxtFile As String
Dim myBuf(45) As String
Dim i As Integer, j As Integer
Dim mytext As String, mymsg As String
Dim myselect As Integer
Dim FirstDay As String, EndDay As String
Dim n As String
_______________________________
Private Sub ReadTxt()
Application.ScreenUpdating = False
n = 1
Open myTxtFile For Input As #1
Do Until EOF(1)
Input #1, myBuf(1), myBuf(2), myBuf(3), myBuf(4), _
myBuf(5), myBuf(6), myBuf(7), myBuf(8), myBuf(9), _
myBuf(10), myBuf(11), myBuf(12), myBuf(13), myBuf(14), _
myBuf(15), myBuf(16), myBuf(17), myBuf(18), myBuf(19), _
myBuf(20), myBuf(21), myBuf(22), myBuf(23), myBuf(24), _
myBuf(25), myBuf(26), myBuf(27), myBuf(28), myBuf(29), _
myBuf(30), myBuf(31), myBuf(32), myBuf(33), myBuf(34), _
myBuf(35), myBuf(36), myBuf(37), myBuf(38), myBuf(39), _
myBuf(40), myBuf(41), myBuf(42), myBuf(43), myBuf(44), myBuf(45)
If n = 2 Then
FirstDay = myBuf(1)
End If
n = n + 1
EndDay = myBuf(1)
Loop
EndDay = myBuf(1)
mymsg = FirstDay & "~" & EndDay
myselect = MsgBox(mymsg, vbYesNo + vbInformation)
If myselect = vbNo Then
Close #1
Exit Sub
End If
Close #1
Open myTxtFile For Input As #1
Do Until EOF(1)
Input #1, myBuf(1), myBuf(2), myBuf(3), myBuf(4), _
myBuf(5), myBuf(6), myBuf(7), myBuf(8), myBuf(9), _
myBuf(10), myBuf(11), myBuf(12), myBuf(13), myBuf(14), _
myBuf(15), myBuf(16), myBuf(17), myBuf(18), myBuf(19), _
myBuf(20), myBuf(21), myBuf(22), myBuf(23), myBuf(24), _
myBuf(25), myBuf(26), myBuf(27), myBuf(28), myBuf(29), _
myBuf(30), myBuf(31), myBuf(32), myBuf(33), myBuf(34), _
myBuf(35), myBuf(36), myBuf(37), myBuf(38), myBuf(39), _
myBuf(40), myBuf(41), myBuf(42), myBuf(43), myBuf(44), myBuf(45)
'データをセルに展開する
i = i + 1
For j = 1 To 45
Cells(i, j) = myBuf(j)
Next j
Loop
Close #1
Application.ScreenUpdating = True
End Sub
_________________________________
Sub myOpenDialog()
myTxtFile = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")
Call ReadTxt
End Sub
お礼
Open "C:\IR_NK\USDJPY_20071010.csv" For Input As #intFileNo こんなのでよかったのですね。 フォルダの選択はできますが。。。 ヘンな質問でしたが、即答大変有難うございました。