2016-03-29 4 views
0

Ich bin ein neuer zu VBA und habe keine formelle Ausbildung aber bin in der Lage gewesen, etwas zu tun, indem ich Code kopiere und modifiziere, um, was ich benötige. Ich brauche etwas Hilfe, um dieses zu ändern. So wie es jetzt steht, setzt dies den gesamten Dateipfad in der Spalte A für alle Dateien, die sich in dem Ordner befinden. Ich suche nur den Dateipfad der Dateien, die ein Schlüsselwort enthalten. Danke für jede Hilfe, die Sie mir geben können.Wie man Schlüsselwort verwendet, um eine Liste von Dateipfaden zu bilden

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

Welche Art von Dateien? Schlüsselwörter im Inhalt der Dateien oder die Dateinamen? –

+0

Zuerst danke für die Hilfe. Die Dateien sind .pdf .doc .txt (könnte später mehr Typ sein). Das Schlüsselwort würde nur für den Dateinamen sein. Im Moment habe ich ein Excel-Blatt, das den Code oben ausführt und alle Dateinamen abruft, dann wird das Blatt (mit den normalen Excel-Such- und Übereinstimmungsbefehlen) eingerichtet, um herauszufinden, welche das Schlüsselwort darin haben. Ich versuche dasselbe mit VBA zu machen. Der Ordner, den ich ziehe, hatte 2000 + Dateien und wuchs – Xcr1000

Antwort

0

Sie können Instr() überprüfen, ob das Schlüsselwort im Dateinamen ist:

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

InStr gibt die Position des Teils wenn festgestellt wird, wenn nicht, wird es 0 zurück. Verwenden Sie dies in der For Each-Schleife.

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 !!! Vielen Dank für die Hilfe. – Xcr1000

Verwandte Themen