|
▼ちくたく さん:
こんにちは。
>
>Sub ファイルを開く順番()
> Dim myF As String
> Dim fStr As String
>
> myF = "D:\tmp"
> fStr = Dir(myF & "\", vbNormal)
>
> Do While fStr <> ""
> Debug.Print fStr
> fStr = Dir
> Loop
>End Sub
>
>というコードを用意し、テストしてみたところ
>D:\tmpフォルダに入っているファイル名が
>以下のような並びで出力されました
>
>E-001.jpg
>E-002.jpg
>E-003.jpg
>E-004.jpg
>E-005.jpg
>E-006.jpg
>E-007.jpg
>E-008.jpg
>E-009.jpg
>E-010.jpg
>000.jpg
>ScanLog1.txt
>03.jpg
>ScanLog.txt
>00.jpg
>01.jpg
>02.jpg
>
>上のE-xxx.jpgのあたりは、わかるのですが、
>下の方になると、規則性が読みとれないんです。
>Dir関数のファイル名取り出しには規則性があるのでしょうか?
ファイルを作成した順番ではないですか(更新は除いて)?
フォルダの中にはDOSのときはディレクトリテーブルなんて
呼ばれていたと思いましたが、ファイル情報が格納されている
と思います。
正確な中身は忘れましたが、ファイル名、開始位置やら
終了位置、作成日・・・。
Dir関数ってこのディレクトリテーブルを順次読み込んでいるのだと
思います。
試しに
'=======================================
Sub mk_main()
Dim idx As Long
Do
ans = Application.GetSaveAsFilename()
If TypeName(ans) <> "Boolean" Then
Open ans For Output As #1
Print #1, "aaa"
Close #1
Cells(idx + 1, 1).Value = ans
idx = idx + 1
Else
Exit Do
End If
Loop
End Sub
上記のコードで新規に作成したフォルダに
適当な名前を付けたファイルを複数個作成してください。
次に
'====================================================
Sub test()
Dim flnm As String
Dim fold As String
fold = "D:\My Documents\TESTエリア\testarea2002\dirtest"
' ↑ファイルを作成したフォルダ名
flnm = Dir(fold & "\*.*")
Do Until flnm = ""
Cells(idx + 1, 2).Value = flnm
idx = idx + 1
flnm = Dir
Loop
End Sub
なんてすると、A列とB列には同じファイル名が入ると思います。
(A列は、フルパスだけど)
確認してみてください。
|
|