VB invalid procedure call or argument

The code below was created to perform a directory listing on a local folder then output it comma delimited to a file on the network. It all works fine unless the listing comes across an invalid file name. In this case error 800A0005 (Invalid procedure call or argument is thrown up on line 14 char 2. Is there some method to ignore such a file or change how the data is output to allow its inclusion. If the only method is to output to an un-delimited text file that would be ok too. I have limited experience so if possible to resolve please modify. All I really need is an out to a file with the directory contents, no bells or whistles if that's what it takes.

Regards
S

Set objFSO = CreateObject("Scripting.FileSystemObject")
 Dim WshNetwork
 Set WshNetwork = CreateObject("WScript.Network")
 ComputerName = WshNetwork.ComputerName

 set WshShell = WScript.CreateObject("WScript.Shell")
 strDesktop = WshShell.SpecialFolders ("Desktop")

 strRootFolder = strDesktop & "\FOLDER"
 strOutputFile = "\\serverdc02\office\SoftHardAudit\ConfDir\LaptopConfDirListings" & "\" & computername & "DirListing.csv"
 strResults = ""
 EnumerateFolder(strRootFolder)
 Set objOutput = objFSO.CreateTextFile(strOutputFile, True)
 objOutput.Write strResults
 objOutput.Close

 Sub EnumerateFolder(objFolder)
       For Each objFile In objFSO.GetFolder(objFolder).Files
             If strResults = "" Then
                   strResults = """" & Replace(objFile.Path, "\", """,""") & """"
             Else
                   strResults = strResults & VbCrLf & """" & Replace(objFile.Path, "\", """,""") & """"
             End If
       Next
       For Each objSubFolder In objFSO.GetFolder(objFolder).SubFolders
             EnumerateFolder objSubFolder
       Next
 End Sub

Open in new window

SimonJohnGAsked:
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.

Vitor MontalvãoMSSQL Senior EngineerCommented:
If you don't want to have an error handling there, then just add "On Error Resume Next" to ignore possible errors.
.
.
.
On Error Resume Next
objOutput.Write strResults
 objOutput.Close

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
SimonJohnGAuthor Commented:
Hi Vitor,

Where would I place this?

Regards
S
0
Vitor MontalvãoMSSQL Senior EngineerCommented:
Should be in the line before you get the error. Should be line 13, right?
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

SimonJohnGAuthor Commented:
Thank you but is there any method so the directory listing can continue? Say all files except those that cannot be successfully listed?
0
Vitor MontalvãoMSSQL Senior EngineerCommented:
Then I think you need to check for those exceptions in your EnumerateFolder procedure, inside the For Each objFile loop.
0
SimonJohnGAuthor Commented:
If only I knew how to do that which I don't.

Thank you  for the suggestion
0
SimonJohnGAuthor Commented:
Just noticed that the files are not invalid file names, they are filenames with Japanese characters, anyway of getting around this?

Regards
S
0
Vitor MontalvãoMSSQL Senior EngineerCommented:
Not really. Sorry.
0
jkaiosIT DirectorCommented:
Just noticed that the files are not invalid file names, they are filenames with Japanese characters, anyway of getting around this?

Since the OS doesn't allow naming a file with certain reserved characters (such as \/:*?""<>|) that's probably why you're getting that error.  So what you have to do is simply remove any of these chars from the fileaname before attempting to create the file.

Public Function removeCraps(ByVal sMyString, _
                            Optional ByVal CRAPS = "\/:*?""<>|", _
                            Optional ByVal sReplaceWith)
   
   Dim ii
   
   For ii = 1 To Len(CRAPS)
      sMyString = Replace(sMyString, Mid$(CRAPS, ii, 1), sReplaceWith)
   Next
   
   removeCraps = sMyString

End Function

Open in new window


Now, on line 13, simply:

strOutputFile = RemoveCraps(strOutputFile)
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
VB Script

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.