Solved

Why does my Excel VBA file system object procedure return a 'rogue' file.

Posted on 2014-09-16
23
456 Views
Last Modified: 2014-09-16
Hi All,

I have an Excel VBA procedure which checks a folder to see if there is any file residing there. If there is then it copies the file to a destination folder.

However, because the file check is in a For Next loop, and even though I only have one file in the folder, it processes an 'invisible' file before exiting the loop. I know this because when I put it in Debug and test the values it shows the second time around the loop that the 'filename' is "Thumbs.db". God knows where this file has come from because it doesn't display in Windows Explorer.

Consequently it is affecting my processing because my filename variable changes to this value.

Any clue as to what this might be ? How can I test the folder without having to loop, as I'll only ever have either no files in the folder or only one file in the folder.

My code is enclosed...

' Check if a file has been moved into the Input folder
    Set fs = CreateObject("Scripting.FileSystemObject")

    strSourceFolder = "C:\Users\Toco\Status Report\Data\Input"
    strDestinationFolder = "C:\Users\Toco\Status Report\Data\Archive"
    Set r = fs.GetFolder(strSourceFolder)

    For Each f In r.Files
       fs.CopyFile strSourceFolder & "\" & f.Name, strDestinationFolder & "\" & f.Name
       strFileName = f.Name
    Next

Open in new window

0
Comment
Question by:Tocogroup
  • 10
  • 5
23 Comments
 
LVL 24

Accepted Solution

by:
Phillip Burton earned 500 total points
ID: 40325141
Thumbs.db is an internal file, created when you look at the folder in Windows Explorer, and it stores thumbnail views of the files. You can't easily delete it.

Therefore, you should test for its existence, and take appropriate actions, i.e.

For Each f In r.Files
    If UCase(f.Name) <> "THUMBS.DB" then
       fs.CopyFile strSourceFolder & "\" & f.Name, strDestinationFolder & "\" & f.Name
       strFileName = f.Name
    End If
    Next
0
 

Author Comment

by:Tocogroup
ID: 40325194
Well how about that !  A hidden file.

Returning to my loop, I have a number of issues with it as it doesn't seem to allow me to assign the file to a variable which I can then use to open/copy/save as/delete the file in subsequent processing.

Everytime i try to assign it as per the code below I get a 'Run-time error 9 Subscript out of range', which from my experience has nothing to do with arrays.

     For Each f In r.Files
        If UCase(f.Name) <> "THUMBS.DB" Then
           fs.CopyFile strSourceFolder & "\" & f.Name, strDestinationFolder & "\" & f.Name
           strFileName = f.Name
        End If
     Next

     Set wbInput = Workbooks.Open(strSourceFolder & "\" & strFileName)

Open in new window


I'm sure there must be a simpler way of managing files than using FileSystemObject ??
0
 
LVL 24

Expert Comment

by:Phillip Burton
ID: 40325213
Have you tried FileCopy (instead of CopyFile)?

How about an ON ERROR RESUME NEXT command as well?

If you want to check for hidden files, then you can always catalogue the folder first, using something like the programme in www.filecats.co.uk - that shows hidden files (as well as system files etc).
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:Tocogroup
ID: 40325224
I've requested that this question be closed as follows:

Accepted answer: 0 points for Tocogroup's comment #a40325194

for the following reason:

Thanks for your assistance. You've been more than helpful.
Toco
0
 
LVL 24

Expert Comment

by:Phillip Burton
ID: 40325225
I have solved the problem.
0
 

Author Comment

by:Tocogroup
ID: 40325228
Ah ok
0
 

Author Comment

by:Tocogroup
ID: 40325384
I've requested that this question be closed as follows:

Accepted answer: 0 points for Tocogroup's comment #a40325194

for the following reason:

Much obliged
0
 
LVL 24

Expert Comment

by:Phillip Burton
ID: 40325385
Please award the points.
0
 

Author Comment

by:Tocogroup
ID: 40325395
But I've awarded the points...twice
0
 

Author Comment

by:Tocogroup
ID: 40325419
I've requested that this question be closed as follows:

Accepted answer: 0 points for Tocogroup's comment #a40325194

for the following reason:

I've now awarded three lots of 500 points. I think there's a problem with the system !
0
 
LVL 24

Expert Comment

by:Phillip Burton
ID: 40325420
:-)
0
 

Author Comment

by:Tocogroup
ID: 40325451
Well yes.....that's what I'm doing. I have been using EE for many years now so I do know how to award points.
I've attached a screenshot of when I accept Philip's solution. I then select the A radio button and then the Submit button.

?? Strange
Capture.PNG
0
 

Author Comment

by:Tocogroup
ID: 40325457
I'm not selecting my own comments !
0
 

Author Comment

by:Tocogroup
ID: 40325484
Hah...nice one !

Just a thought though....I'm running this in Internet Explorer 8 and it renders awfully. Unfortunately my employees are not so sympathetic and won't allow me to download the latest version of IE or, even better, Firefox.

Will be interesting to see if this reoccurs.

Regards
Toco
0
 

Author Comment

by:Tocogroup
ID: 40325529
Thanks, but like Nectar points I'm not sure I'd know what to do with them.      :-)
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
Workbook link problems after copying tabs to a new workbook? David Miller (dlmille) Intro Have you either copied sheets to a new workbook, and after having saved and opened that workbook, you find that there are links back to the original sou…
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question