access vba - How to stop recursive search once the file is found in VBA -


i have below script , modify http://www.vbforums.com/showthread.php?613400-loop-through-folders-subfolders

private sub command1_click()  dim fld folder dim searchstring string dim resultfilepath string set fso = new filesystemobject set fld = fso.getfolder("c:\users\janedoe\desktop\jane")    searchstring = "claimsheet.xlsx"                         resultfilepath = recursivesearch(fld, searchstring)     set fld = nothing set fso = nothing  if resultfilepath = ""     msgbox ("we not find file " & searchstring) else     msgbox ("we found it, @ " & resultfilepath) end if  end sub  function recursivesearch(fld folder, search string) string dim tfold folder dim tfil file  each tfold in fld.subfolders     debug.print "looking in  " & tfold & " folder"     recursivesearch tfold, search      if recursivesearch = search         exit function     end if  next   debug.assert instr(tfil, search) = 0      if instr(tfil.name, search)                     recursivesearch = tfil.path         exit function     end if next   end function 

what recursivesearch function is, search folder searchstring file, once found, stop searching , return file path.

the problem is, can't exit function without losing value @ line

recursivesearch = tfil.path 

i think because function might have gone out of scope when returning upper level .

any appreciated,

your recursion line should be:

recursivesearch = recursivesearch(tfold, search) 

this allow each level of recursion pass it's result chain.

also, following line seems missing code in question:

for each tfil in fld.files 

Comments

Popular posts from this blog

html - Sizing a high-res image (~8MB) to display entirely in a small div (circular, diameter 100px) -

java - IntelliJ - No such instance method -

identifier - Is it possible for an html5 document to have two ids? -