|
エラーになる原因がなんとなく解りました。
ドスでのテキストファイルができるまでの時間。
これより、もっといい方法があると思います。
不安定すぎますね。すみません。
Sub dame()
Dim Fpat As String, ComL As String, ReadData As String
Dim TB() As String, FileNo As Integer, i As Long, ii As Long
Dim DFoP As String
DFoP = CurDir()
Fpat = "C:\TrrFL.txt" 'テキスト1時保存場所
TrFld = "C:\" 'ツリー表示フォルダ
'カレントディレクトリーを移す。
CreateObject("WScript.Shell").CurrentDirectory = TrFld
'ドスコマンド
ComL = "COMMAND.COM /C tree>" & Fpat
Call Shell(ComL, vbHide)
'DOSでTreeテキストができるまでの時間があいまい。
'自分の環境で15秒ぐらい待たないとダメでした。
'テキストができるまでの時間がよく解りませんでした。
'この辺があいまいで、すみません。
Application.Wait Now + TimeValue("00:00:15")
DoEvents
Do Until Dir(Fpat) <> ""
DoEvents '←これもテキストができるまでの時間稼ぎ
Loop
FileNo = FreeFile
Open Fpat For Input As #FileNo
i = 0
Do Until EOF(FileNo)
i = i + 1
Line Input #FileNo, ReadData
Loop
Close #FileNo
DoEvents
ReDim Preserve TB(1 To i, 1 To 1)
ii = 0
FileNo = FreeFile
Open Fpat For Input As #FileNo
Do Until EOF(FileNo)
ii = ii + 1
Line Input #FileNo, TB(ii, 1)
Loop
Close #FileNo
'65536行以上の場合だった場合を考えて取りあえず。
If i > 65536 Then
MsgBox "プログラム改良必須"
Erase TB
Kill Fpat
Exit Sub
End If
Range("A1").Resize(i).Value = TB
DoEvents
Erase TB
Kill Fpat '1時保存テキストを削除
DoEvents
End Sub
|
|