Excel VBA - Copy Folder problem

  • Thread starter Thread starter PaulC
  • Start date Start date
P

PaulC

I wish to copy a folder and its sub-folders and all its files to anothe
location from within an Excel VBA macro. Is this possible?

Pau
 
Hi Paul,

All things are possible!

Dim FSO As Object

Sub Folders()
Dim i As Long
Dim sFolder As String
Dim sSource As String
Dim sTarget As String

sSource = "C:\MyTest"
sTarget = "C:\NewDir"

Set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next
If FSO.GetFolder(sTarget) Is Nothing Then
MkDir sTarget
End If
On Error GoTo 0

CopyFiles sSource, sTarget

End Sub

'-----------------------------------------------------------------------
Sub CopyFiles(ByVal Source As String, ByVal Target As String)
'-----------------------------------------------------------------------
Dim oFldr As Object
Dim oFolder As Object
Dim oFile As Object
Dim oFiles As Object
Dim sTarget As String

Set oFolder = FSO.GetFolder(Source)
If InStr(4, oFolder.Path, "\") = 0 Then
sTarget = Target
Else
sTarget = Target & Mid(Source, InStr(4, oFolder.Path, "\"), 255)
End If
On Error Resume Next
If FSO.GetFolder(sTarget) Is Nothing Then
MkDir sTarget
End If
On Error GoTo 0
Set oFolder = FSO.GetFolder(Source)
Set oFiles = oFolder.Files
For Each oFile In oFiles
oFile.Copy (sTarget & "\" & oFile.Name)
Next oFile

For Each oFldr In oFolder.Subfolders
CopyFiles oFldr.Path, Target
Next

End Sub

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
You can duplicate a complete folder like this:

Sub CopyFolder()
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CopyFolder "c:\old", "c:\new"
End Sub


--
Jim Rech
Excel MVP
|I wish to copy a folder and its sub-folders and all its files to another
| location from within an Excel VBA macro. Is this possible?
|
| Paul
|
|
| ---
| Message posted
|
 
Many thanks Bob,

Your copy folder macro works perfectly, with the advantage that it wil
create a new folder if its not already there. I have made use of thi
so that I can create a new one for each day with the date at the end o
the folder name.

Thanks again,

Pau
 
Greetings...and TIA for your help.
Is it possible to exclude a specific file (eg "test.xls") from this
code?I'm not able to get the NAME of the file that is being
processing...any idea?
please help me!!
 
The thread has aged off my cache of messages, but in general:

if lcase(somevariableforthefilename) = "test.xls" then
'do nothing
else
'do all the stuff you want to do
end if
 

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

Back
Top