Re: Using an Excel *** for batch delete
- From: Colin Hayes <Colin@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 14 Aug 2008 12:19:17 +0100
Hi Per
BTW the filenames don't have dots , so that shouldn't be an issue , although I can see why you would ask.
Also , is there a check to see if the user has entered identical source and destination folder?
I know this shouldn't happen , but wondered what the routine would make of the situation where the input to both source and destination popups was identical.
Is there an error trap for this eventuality?
Best Wishes
Colin
In article <2b323EBXB4oIFw82@xxxxxxxxxxxxxxxxxx>, Colin Hayes <Colin@xxxxxxxxxxxxxxxxxx> writes
HI Per
OK that's excellent - thanks very much.
I ran the routine and it works very neatly with files with extensions in
place , returning the correct 'Moved' or 'Not Found In Source Path' as
appropriate.
When I used it on filenames with no extension , it unfortunately reports
only 'Not Found In Source Path' for every file. This was even when the
files were clearly in the source path.
This apart , I think it's a very handy and useful routine.
Thank again for your expertise and time.
Best Wishes
Colin
In article <O3CfEfX$IHA.1152@xxxxxxxxxxxxxxxxxxxx>, Per Jessen
<per.jessen@xxxxxxx> writes
Hi Colin
This version should copy both files with and without file extensions.
Does the filename contain any dots. If so that may confuse the routine, but
I will try to find a solution for that.
Sub test1()
Range("B2", Range("B2").End(xlDown)).ClearContents
Set fs = CreateObject("Scripting.FileSystemObject")
SourcePath = InputBox("Enter source path : ")
If SourcePath = "" Then Exit Sub
sExists:
If fs.FolderExists(SourcePath) = False Then
SourcePath = InputBox("The path " & SourcePath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo sExists
End If
If Right(SourcePath, 1) <> "\" Then SourcePath = SourcePath & "\"
DestPath = InputBox("Enter destination path : ")
If DestPath = "" Then Exit Sub
dExists:
If fs.FolderExists(DestPath) = False Then
DestPath = InputBox("The path " & DestPath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo dExists
End If
If Right(DestPath, 1) <> "\" Then DestPath = DestPath & "\"
LastRow = Range("A1").End(xlDown).Row
For r = 2 To LastRow
FileToMove = SourcePath & Cells(r, "A").Value
If fs.GetExtensionName(FileToMove) = "" Then
With Application.FileSearch
.NewSearch
.LookIn = SourcePath
.SearchSubFolders = False
.Filename = FileToMove
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
For c = 1 To .FoundFiles.Count
TargetFile = .FoundFiles(c)
ext = fs.GetExtensionName(TargetFile)
If fs.fileexists(FileToMove & "." & ext) = True Then
fs.MoveFile FileToMove & "." & ext, DestPath
Cells(r, "B") = "Moved"
Exit For
Else
Cells(r, "B") = "Not Found In Source Path"
End If
Next
Else
Cells(r, "B") = "Not Found In Source Path"
End If
End With
Else
Debug.Print fs.GetExtensionName(FileToMove) & " " & FileToMove
If fs.fileexists(FileToMove) = True Then
fs.MoveFile FileToMove, DestPath
Cells(r, "B") = "Moved"
Else
Cells(r, "B") = "Not Found In Source Path"
End If
End If
Next
Set fs = Nothing
Columns("B:B").EntireColumn.AutoFit
End Sub
Regards,
Per
"Colin Hayes" <Colin@xxxxxxxxxxxxxxxxxx> skrev i meddelelsen
news:md5SWvAtLeoIFwem@xxxxxxxxxxxxxxxxxxxxx
HI Per
OK thanks for this.
It gives a puzzling outcome now I find - it just says 'Not Found In Source
Path' for everything , with or without extensions. I'm surprised - it must
be something with the extension logic. I tried it with no extension and
with extension in place , but it can't find either at the moment...
Best Wishes
Colin
In article <Osf#ArK$IHA.528@xxxxxxxxxxxxxxxxxxxx>, Per Jessen
<per.jessen@xxxxxxx> writes
Hi Colin
This should do it:
Sub test1()
Range("B2", Range("B2").End(xlDown)).ClearContents
Set fs = CreateObject("Scripting.FileSystemObject")
SourcePath = InputBox("Enter source path : ")
If SourcePath = "" Then Exit Sub
sExists:
If fs.FolderExists(SourcePath) = False Then
SourcePath = InputBox("The path " & SourcePath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo sExists
End If
If Right(SourcePath, 1) <> "\" Then SourcePath = SourcePath & "\"
DestPath = InputBox("Enter destination path : ")
If DestPath = "" Then Exit Sub
dExists:
If fs.FolderExists(DestPath) = False Then
DestPath = InputBox("The path " & DestPath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo dExists
End If
If Right(DestPath, 1) <> "\" Then DestPath = DestPath & "\"
LastRow = Range("A1").End(xlDown).Row
For r = 2 To LastRow
FileToMove = SourcePath & Cells(r, "A").Value
With Application.FileSearch
.NewSearch
.LookIn = SourcePath
.SearchSubFolders = False
.Filename = FileToMove
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
TargetFile = .FoundFiles(1)
ext = fs.GetExtensionName(TargetFile)
If fs.fileexists(FileToMove & "." & ext) = True Then
fs.MoveFile FileToMove & "." & ext, DestPath
Cells(r, "B") = "Moved"
Else
Cells(r, "B") = "Not Found In Source Path"
End If
Else
Cells(r, "B") = "Not Found In Source Path"
End If
End With
Next
Set fs = Nothing
Columns("B:B").EntireColumn.AutoFit
End Sub
Best regards,
Per
"Colin Hayes" <Colin@xxxxxxxxxxxxxxxxxx> skrev i meddelelsen
news:O1$Y8KA3qWoIFw5K@xxxxxxxxxxxxxxxxxxxxx
Hi Per
OK Thanks for that. I tried it out , and it works perfectly. Thanks.
On the points you make :
C - My list of filenames in column A have no file extension. When I run
the routine it does not find them in the source folder.
When I add the file extension , it finds them.
It would be helpful if it ignored files extensions altogether and just
matched on the actual file name. Clearly , when it moves them , it does
need to move the file to the destination folder with extension intact.
Perhaps a .* command could do this.
My list could have hundreds of filenames , and to have to add the
extension before running the routine would be laborious indeed. Best if
it
could just ignore extensions completely , if it is possible.
D - Yes it would an idea to clear column B and make wide enough to take
the text.
Thanks again Per - I'm very grateful.
Best Wishes
Colin
In article <uA2aL2F$IHA.5048@xxxxxxxxxxxxxxxxxxxx>, Per Jessen
<per.jessen@xxxxxxx> writes
Hi Colin
This should cover A and B.
C. Do you want the routine always to look up the file extension, or
should
we first check if the filename include an file extension ?
D. Should I include at statement to clear column B before the transfer
is
started ?
Sub test()
Set fs = CreateObject("Scripting.FileSystemObject")
SourcePath = InputBox("Enter source path : ")
If SourcePath = "" Then Exit Sub
sExists:
If fs.FolderExists(SourcePath) = False Then
SourcePath = InputBox("The path " & SourcePath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo sExists
End If
If Right(SourcePath, 1) <> "\" Then SourcePath = SourcePath & "\"
DestPath = InputBox("Enter destination path : ")
If DestPath = "" Then Exit Sub
dExists:
If fs.FolderExists(DestPath) = False Then
DestPath = InputBox("The path " & DestPath & " don't exists" _
& vbLf & vbLf & "Enter path : ")
GoTo dExists
End If
If Right(DestPath, 1) <> "\" Then DestPath = DestPath & "\"
LastRow = Range("A1").End(xlDown).Row
For r = 2 To LastRow
FileToMove = SourcePath & Cells(r, "A").Value
If fs.fileexists(FileToMove) = True Then
fs.movefile FileToMove, DestPath
Cells(r, "B") = "Moved"
Else
Cells(r, "B") = "Not Found In Source Path"
End If
Next
Set fs = Nothing
End Sub
Best regards,
Per
"Colin Hayes" <Colin@xxxxxxxxxxxxxxxxxx> skrev i meddelelsen
news:lpHS7QAXHKoIFwcL@xxxxxxxxxxxxxxxxxxxxx
Hi Per
OK I tried it out and it works fine. Thank you - I'm grateful.
Here is what happened here :
A. It moved the files in my list , but it does give an error of
'Invalid
procedure Call Or Argument' after the last file at the line
'fs.movefile
fToMove, DestPath'.
B. Also , where a filename in column A is not found in the source
folder
,
the whole program stops.
In column B , could each filename be marked 'Moved' or 'Not Found In
Source Path' when the routine runs? The routine could then run though
smoothly from top to bottom without stopping.
This would be better than removing the file from the list as the
present
routine does , and would mean it could ignore unfound files and just
mark
in column be the success or failure of the Move.
C. Do you think too , that the routine could be made to ignore the
file
extension when checking if the file is present in the source folder?
Thanks again Per
Best Wishes
.
- Follow-Ups:
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- References:
- Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Otto Moehrbach
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Re: Using an Excel *** for batch delete
- From: Per Jessen
- Re: Using an Excel *** for batch delete
- From: Colin Hayes
- Using an Excel *** for batch delete
- Prev by Date: Re: Convert Numbers to Dates
- Next by Date: Re: Convert Numbers to Dates
- Previous by thread: Re: Using an Excel *** for batch delete
- Next by thread: Re: Using an Excel *** for batch delete
- Index(es):
Loading