.Foundfiles Question

S

Shane

Hi all,

Would you be able to advise how I could copy the files found by the
following macro to a another directory - say D:\Data

Set fs = Application.FileSearch
With fs
.NewSearch
.LookIn = "C:\My Documents"
.Filename = "*.doc"
.SearchSubFolders = True
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles


If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
' " file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
Thanks
 
B

Bob Phillips

Not tested

Set fs = Application.FileSearch
With fs
.NewSearch
.LookIn = "C:\My Documents"
.Filename = "*.doc"
.SearchSubFolders = True
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles


If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
' " file(s) found."
For i = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(i)
Activeworkbook.SaveAs "D:\" & Activeworkbook.Name
Activeworkbook.Close Savechanges:=False
Next i
Else
MsgBox "There were no files found."
End If


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
S

Shane

thanks bob,
can we simply copy the files without actually having to open them. much like
a copy and past behind the scene?
 
B

Bruno Campanini

Would you be able to advise how I could copy the files found by the
following macro to a another directory - say D:\Data
[...]

Simply replace your IF clause with the following:
====================================
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) Then
For i = 1 To .FoundFiles.Count
FileCopy .FoundFiles(i), "C:\Prova\" & _
Mid(.FoundFiles(i), InStrRev(.FoundFiles(i), "\") + 1)
Next i
Else
MsgBox "There were no files found."
End If
====================================
Ciao
Bruno
 
B

Bob Phillips

Hi Shane,

Yes, this alternative way

'---------------------------------------------------------------------------
Sub CopyFolder()
'---------------------------------------------------------------------------
Dim oFSO As Object
Dim sFolderSource As String
Dim sFolderTarget As String

Set oFSO = CreateObject("Scripting.FileSystemObject")
sFolderSource = "C:\My Documents"
sFolderTarget = "D:\Data"
If oFSO.FolderExists(sFolderSource) Then
If Not oFSO.FolderExists(sFolderTarget) Then
MkDir sFolderTarget
End If
oFSO.CopyFolder sFolderSource, sFolderTarget & "\"
End If
Set oFSO = Nothing
End Sub


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
S

Shane

thank you all so much!!!


Bruno Campanini said:
Would you be able to advise how I could copy the files found by the
following macro to a another directory - say D:\Data
[...]

Simply replace your IF clause with the following:
====================================
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) Then
For i = 1 To .FoundFiles.Count
FileCopy .FoundFiles(i), "C:\Prova\" & _
Mid(.FoundFiles(i), InStrRev(.FoundFiles(i), "\") + 1)
Next i
Else
MsgBox "There were no files found."
End If
====================================
Ciao
Bruno
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top