2016-04-01 25 views
0

'u döndürür Dosya adının tamamını (klasör adresi + dosya adı ve uzantısı) almak için bir klasörde bir döngü çalıştırıyorum.VBA - Do while Döngü, Dir <Geçersiz yordam çağrısı veya bağımsız değişken>

Ben aşağıdaki kullanıyorum, ama bir noktada Dir değeri tüm dosyaları okuma tamamlandı olarak hata döngü önce atılır <Invalid procedure call or argument>

recsFolder = Functions.GetFolder("C:\") 
recfile = recsFolder & "\" & Dir(recsFolder & "\*.rec*") 
Do While Len(recfile) > 0 
    recfile = recsFolder & "\" & Dir 
Loop 

olduğunu. DÜZENLEME

: Başka bir yaklaşım ve Dir her şey değişiyor ben bu son yaklaşım çalışıyorum

If Right(recsFolder, 1) <> "\" Then recsFolder = recsFolder & "\" 
numFiles = 0 
recfile = Dir(recsFolder) 
While recfile <> "" 
    numFiles = numFiles + 1 
    recfile = Dir() 
Wend 

F8 tuşuna ve aynı hatayı alıyorum. Sorun şu ki, kod satırını satır (F8) ile çalıştırdığımda, Dir değerinin her zaman yeni bir kod satırının While içinde değiştiğini görebiliyorum.

+0

Neden her recfile için 'debug.print' deyimi eklemeyin işin nerede başarısız olduğunu görüyor musun? Alternatif olarak, bir hatada Goto’yu ekleyebilir ve belki de next ileride devam edebilirsiniz ’. Ancak, sorunun nerede olduğunu bulmanızı tavsiye ederim! – MiguelH

+0

Aynı "Geçersiz Yordam Çağrısı veya Bağımsız Değişkeni" bildirir. – peetman

+0

@MiguelH Lütfen düzenlenmiş soruya bakın. Teşekkürler – peetman

cevap

0

yerine DIR oldukça sağlam bir çerçeve:

' enable Tools->References, Microsoft Scripting Runtime 

Sub Test() 
    Dim fso As New Scripting.FileSystemObject 
    Dim fldr As Folder 

    Set fldr = fso.GetFolder("C:\test") 
    HandleFolder fldr 
End Sub 


Sub HandleFolder(fldr As Folder) 
    Dim f As File 
    Dim subFldr As Folder 

    ' loop thru files in this folder 
    For Each f In fldr.Files 
     Debug.Print f.Path 
    Next 

    ' loop thru subfolders 
    For Each subFldr In fldr.SubFolders 
     HandleFolder subFldr 
    Next 
End Sub 
0

yardımcı olur onu IDK ama bu konuyu daha fazla nasıl

path = "yourpath" & "\" 
Filename = Dir(path & "*.fileextension") 

Do While Len(Filename) > 0 
    'some code 
    Filename = Dir 
Loop