dir ("C:\*.*",vbReadOnly)
この関数を使いCのルートディレクトリの中の読み取り専用のファイルの名前だけを取りたいのですができません。先頭のファイルだけを返してきます。
HELPでは*も使えるとかいてあるのですが・・dirは使わないほうがいいのでしょうか?
その後、何も返さなくなるまでDir関数を呼べば取れます。
Dim sFile As String
sFile = Dir("C:\*.*", vbReadOnly)
Do Until (Len(sFile) = 0)
Debug.Print sFile
sFile = Dir
Loop
早い回答ありがとうございました。おかげさまで解決しました。
コーディングしていて1つ気づいたことを補足しておきますね
Private Sub Command1_Click()
Dim sFile As String
sFile = Dir("C:\*.*", vbReadOnly)
sFile = Dir
Do Until (Len(sFile) = 0)
Debug.Print sFile
sFile = Dir
Loop
End Sub
dir関数ははじめに返す戻り値(ファイル名)はそのフォルダーにある最初のファイル名らしいです。なのではじめの戻り値だけは飛ばしました。
nanashiさんありがとうございました。
> dir関数ははじめに返す戻り値(ファイル名)はそのフォルダーにある最初のファイル名らしいです。
> なのではじめの戻り値だけは飛ばしました。
それ、試した上での発言ですかね?
最初のファイルを飛ばして問題なければイイんですが…。
すいません><試したファイル2個だっため正確な結果が得られませんでした。
やはりdir関数をループでまわしてファイル名を吐き出しても読み取り専用ファイルの名前だけ返してくれないようです。フォルダーの中にあるすべてのファイルを吐き出してしますようです。
試してみたのですが
確かに全てのファイル名を返してしまいました。
dir関数ではないですが
これでどうでしょうか?
FileSystemObjectです。
詳しくはヘルプでも見て下さい。
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("c:\")
For Each objFile In objFolder.Files
If objFile.Attributes And 1 Then
Debug.Print objFile.Name
End If
Next
eiさん1つの回答ありがとうございます。
dir関数の謎は謎のままですが・・・とりあえずこのやり方でやってみます。
eiさんnanashiさんありがとうございました。