2016-03-29 15 views
0

VBA'da yeni bir eğitim alıyorum ve herhangi bir resmi eğitimim yok, ancak ihtiyacım olan şeylere kopyalayıp kodu değiştirerek birkaç şey yapabildim. Bunu değiştirmek için biraz yardıma ihtiyacım var. Şimdiki haliyle, bu, klasördeki tüm dosyalar için A sütunundaki tüm dosya yolunu koyar. Ne yapmak istediğim sadece bir anahtar kelime içeren dosyaların dosya yolunu almaktır. Bana verebileceğin herhangi bir yardım için teşekkür ederim.Dosya yollarının bir listesini yapmak için Anahtar sözcük nasıl kullanılır

Sub File_List() 
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim i As Integer 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder("C:\user\temp") 
i = 1 
For Each objFile In objFolder.Files 
Cells(i + 1, 1) = objFile.path 
    i = i + 1 
Next objFile 
End Sub 
+1

Dosyaların türü (türleri) nedir? Dosyaların içeriğinde veya dosya adlarında anahtar kelimeler var mı? –

+0

İlk yardım için teşekkür ederim. Dosyalar .pdf .doc .txt'dir (daha sonradan daha fazla olabilir). Anahtar Kelime yalnızca dosya adı için olurdu. Şu anda yukarıdaki kodu çalıştıran bir Excel sayfam var ve tüm dosya isimlerini çektikten sonra, bu sayfada bulunan anahtar sözcüğüne sahip olan sayfayı bulmak (normal Excel arama ve eşleme komutları ile). Aynı şeyi sadece VBA ile yapmaya çalışıyorum. Ben çekiyorum klasör 2000 + dosyaları vardı ve büyüyen – Xcr1000

cevap

0

Anahtar kelime dosya ise() denetlemek için Instr kullanabilirsiniz: değilse

If Len(InStr(1, objFile.Path, "KEYWORD", vbTextCompare)) > 0 Then 

ınstr altdizgenin Konumunu döner o bulunursa, bu 0 döndürecektir. Bunu Her döngü için kullanın.

0
Sub File_List() 

    Dim objFSO As Object 
    Dim objFolder As Object 
    Dim objFile As Object 
    Dim i As Integer 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFSO.GetFolder("C:\user\temp") 
    i = 1 

    For Each objFile In objFolder.Files 
     If LCase(objFile.Name) Like "*keywordhere*" Then 
      Cells(i + 1, 1) = objFile.Path 
      Cells(i + 1, 2) = objFile.Name 
      i = i + 1 
     End If 
    Next objFile 

End Sub 
+0

Perfecto !!! Tüm yardımlarınız için çok teşekkür ederim. – Xcr1000

İlgili konular