VBA'da, belirli bir dizinde belirli bir uzantıya sahip tüm dosyaların listesini nasıl alabilirim? esy uzantılı ilk dosyayı döndürür : ("\ yourPath \ * esy C" vbNormal) i excel 2007Bir dizinde ESY uzantılı tüm dosyaların listesi nasıl alınır?
cevap
Yoruma cevaben "kaç kere kaçacağını biliyorum?", bu örnek, adları strPattern ile eşleşen tüm dosyaları listeleyene kadar çalışır. strFolder sabitini değiştirin.
Public Sub ListESY()
Const strFolder As String = "C:\SomeFolder\"
Const strPattern As String = "*.ESY"
Dim strFile As String
strFile = Dir(strFolder & strPattern, vbNormal)
Do While Len(strFile) > 0
Debug.Print strFile '<- view this in Immediate window; Ctrl+g will take you there
strFile = Dir
Loop
End Sub
Dir kullanıyorum çünkü
i Application.FileSearch
yapamadığını duyuyorum. Her bir sonraki Dir() çağrısı sonraki çağrıyı döndürür.
harika, bu yüzden kaç kez ben biliyorum onu çalıştırmak için? –
Sonuç uzunluğunu bir WHILE veya DO döngüsünde sınayın. Uzunluk 0 olduğunda bitirdiniz. Debug.Print'in ne yaptığını merak edenler için – mohnston
Alternatif seçenek: Nesnelerin FileSystemObject ailesi için "Microsoft Scripting çalışma zamanı" kitaplığı (Araçlar kontrol ... Kaynaklar) kullanın. Aşağıdaki gibi bir şey olabilir:
Bu kod daha iyi olurdu (ve FSB'ye bir başvuru gerektirmek yerine geç bağlama kullandıysa +1 benden). –
@ David-W-Fenton - Geç bağlama neden daha iyi olacağını anlamıyorum, açıklığa kavuşturmak için? –
Geç bağlama, FSO'nun otomasyonunun etki alanı ilkeleri tarafından engellenebilmesi nedeniyle daha iyidir. Geç bağlama, * her zaman * varsayılan Access set referansının parçası olmayan herhangi bir bileşen için daha iyidir (çok az istisna hariç). Performans isabeti, bir referansı önbelleğe alarak ve bunu her kullandığınızda yeniden başlatmak yerine bunu kullanarak kolayca önlenebilir. –
Aşağıdaki kod, FileSystemObject öğesini kullanmaktan yaklaşık 19 kat daha hızlı çalışır. Makinemde, üç farklı dilde 4000 dosya bulmak FileSystemObject kullanarak 1,57 saniye sürdü, ancak bu kodu kullanarak sadece 0.08 saniye sürdü.
Public Function CountFilesWithGivenExtension(_
i_strFolderWithTerminalBackslant As String, _
i_strExtensionIncludingPeriod As String _
) As Long
If Len(Dir$(i_strFolderWithTerminalBackslant & "*" _
& i_strExtensionIncludingPeriod)) > 0 Then
CountFilesWithGivenExtension = 1
While Len(Dir$) > 0
CountFilesWithGivenExtension = _
CountFilesWithGivenExtension + 1
DoEvents
Wend
Else
CountFilesWithGivenExtension = 0
End If
End Function
Örnek kullanım:
Debug.Print CountFilesWithGivenExtension("C:\", ".ex*")
("DoEvents" gerekli değildir, ancak gerekirse kırın/Pause kullanmasını sağlar.)
- 1. Nodejs ile bir dizinde .txt uzantılı ilk dosya nasıl alınır?
- 2. eclipse editöründeki tüm açık dosyaların listesi nasıl alınır?
- 3. Git deposundaki tüm dosyaların sayısı nasıl alınır?
- 4. Bir dizinde ve tüm alt dizindeki dosyaların listelenmesi
- 5. Aşamalı dosyaların listesi
- 6. xcode 4 hedef dosyaların listesi
- 7. Tüm Wikipedia makalelerinin başlıklarının bir listesi nasıl alınır?
- 8. Bir kişinin tüm github depolarının listesi nasıl alınır?
- 9. Bir DocumentDB belgesindeki tüm koleksiyonların listesi nasıl alınır?
- 10. Kök dizinde üst dizin listesi
- 11. Clojure'da bir filemask (joker karakter) ile eşleşen dosyaların bir listesi nasıl alınır?
- 12. Geoserver'dan katmanların listesi nasıl alınır
- 13. Redshift'deki UDF listesi nasıl alınır?
- 14. DataTable bir sütun değerleri listesi nasıl alınır?
- 15. ClearCase Uygulanan etiket türü uygulanmış dosyaların listesi
- 16. GIT yeni/değiştirilmiş/silinmiş dosyaların listesi
- 17. Tüm Subversion commit yazar kullanıcı adları listesi nasıl alınır?
- 18. Sayısal dizide tüm NaN değerlerinin dizin listesi nasıl alınır?
- 19. Google App Engine - Tüm uygulama yöneticilerinin listesi nasıl alınır?
- 20. Data.frames'ın dizin listesi - tüm x-inci sütunları nasıl alınır?
- 21. R'deki tüm Yahoo Finance yatırım fonlarının listesi nasıl alınır?
- 22. Subversion: Tüm aktif, dallanmamış dalların listesi nasıl alınır
- 23. Tüm yüklü paketlerin listesi ile birlikte bestecinin sürümü nasıl alınır?
- 24. Wget veya curl kullanarak kullanılabilir dosyaların bir listesi nasıl edinilir?
- 25. Git - dosyaların bir klasörünün tüm yazarlarını listeleyin?
- 26. tüm dosyaların bir dize değiştirin - Unix
- 27. Dahili depolama birimine kaydedilmiş dosyaların listesi
- 28. Taleo powered websitesinde işlerin listesi nasıl alınır
- 29. Belirli Python modülündeki değişkenlerin listesi nasıl alınır?
- 30. Selenium hub'dan mevcut tarayıcıların listesi nasıl alınır?
, bakınız: http://stackoverflow.com/questions/2916287/where-does-vba-debug-print-log-to – ecoe