2013-09-07 1 views
1

Quelqu'un peut-il m'aider avec une macro VBA Excel pour rechercher des fichiers dans différents répertoires fournis dans la colonne B, basé sur les mots clés donnés dans la colonne A et retour " Présenter le fichier "/" Fichier non présent » dans la colonne C.Excel Macro pour rechercher des fichiers basés sur un mot-clé et renvoyer vrai si présent

Exemple

mots-clés | FolderPath | Résultat

1234 | E: \ Documents \ ABC

Apple | F: \

Fichier2 | E: \ Documents \ Test \

Je suis nouveau à exceller Macros. Sil te plait aide moi!

Merci d'avance!

+0

sont les mots clés se trouvent dans le nom du fichier ?? –

+0

oui, désolé à ce sujet. Les mots-clés font partie du nom de fichier. Dites, si le mot-clé est "1234", et dans le répertoire "E: \ Documents \ ABC", le nom de fichier peut être 1234_abcdefg ou abcde_1234_ghij, Espérons que cela a du sens – Kamall

Répondre

3

pour cette solution:

Sub IsItThere() 
    Dim KeyWd As String 
    Dim Pathh As String, fName As String 
    Dim N As Long, J As Long 
    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For J = 1 To N 
     KeyWd = Cells(J, 1).Value 
     Pathh = Cells(J, 2).Value 
     If Right(Pathh, 1) = "\" Then 
      Pathh = Mid(Pathh, 1, Len(Pathh) - 1) 
     End If 
     Set objShell = CreateObject("Shell.Application") 
     Set objFolder = objShell.Namespace((Pathh)) 

     For Each strFileName In objFolder.Items 
      fName = objFolder.GetDetailsOf(strFileName, 0) 
      If InStr(1, fName, KeyWd) > 0 Then 
       Cells(J, 3).Value = "File Present" 
       GoTo NextRecord 
      End If 
     Next 
     Cells(J, 3).Value = "File Not Present" 
NextRecord: 
     Set objFolder = Nothing 
     Set objShell = Nothing 
    Next J 
End Sub 
+0

cela fonctionne incroyablement bien! Merci! Je devais simplement changer la valeur dans 'Pour J = 1 à N' comme' Pour J = 2 à N' - je me demandais juste, si l'emplacement du dossier est sur un lecteur partagé, alors la chaîne de localisation devient quelque chose comme ça " \\ Files \ CheckData \ ". Dans un tel cas, devrais-je changer le code pour quelque chose d'autre? – Kamall

+0

Je ne sais pas ......... J'attribue toujours un indicateur de lecteur logique (comme Z :) aux dossiers réseau –

+0

OK! Existe-t-il un moyen pour cette macro de vérifier dans les sous-dossiers? – Kamall

Questions connexes