How do I check for an existing file in VBA Excel ?

Hi All,

I am building a small Excel VBA application and I want to check if a Windows folder has a file in it. If it does then I want to process the file by copying it to another folder and then deleting it.

How should I begin to code this ?

Thanks
Toco
TocogroupAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

MacroShadowCommented:
This is one way:
If Dir("C:\Test\Test.txt") = "" Then
  MsgBox "File does not exist"
Else
  MsgBox "File exist"
End If

Open in new window

0
MacroShadowCommented:
This is another:
Dim oFso As Object

Set oFso = CreateObject("Scripting.FileSystemObject")

If oFso.FileExists("C:\Test\Test.txt") = False Then
     MsgBox "File does not exist"
Else
    MsgBox "File exist"
End If

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
KimputerCommented:
Another way:

Sub test()

Set fs = CreateObject("Scripting.FileSystemObject")

If fs.FileExists("c:\a.txt") Then
    fs.CopyFile "c:\a.txt", "c:\temp\a.txt"
    fs.DeleteFile "c:\a.txt"
End If

End Sub

Open in new window

0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

TocogroupAuthor Commented:
Sorry, my fault. I should have said a folder with 'any' file in it. That is, I don't know the filename.
0
TocogroupAuthor Commented:
So, I want to check to see if ANY file exists in that folder and if it does then I copy and delete it. How do I acquire its filename ?
0
KimputerCommented:
You loop through it here:

Sub test()

Set fs = CreateObject("Scripting.FileSystemObject")

Source = "c:\temp1"
Dest = "c:\temp2"
Set r = fs.GetFolder(Source)

For Each f In r.Files
    fs.CopyFile Source & "\" & f.Name, Dest & "\" & f.Name
    fs.DeleteFile Source & "\" & f.Name
Next


End Sub

Open in new window

0
TocogroupAuthor Commented:
I'm getting a 'RunTime error  Path not found' message on the last line of the script that reads as follows:
Source = "\Input"
Dest = "\Archive"
Set r = fs.GetFolder(Source)

Is this because it doesn't use relative folder addresses ? Do I have to enter the full file path ? Or can I use a relative address ?
0
Rory ArchibaldCommented:
NFP:

You can just replace the Test.txt file name in MacroShadow's Dir code with *.*
0
TocogroupAuthor Commented:
'RunTime error 76 Path not found' I meant to say.
0
KimputerCommented:
Please use FULL path!
0
TocogroupAuthor Commented:
Thanks to you both for assisting me with this. Consequently, I've split the points.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Excel

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.