Solved

VB invalid procedure call or argument

Posted on 2014-09-10
9
87 Views
Last Modified: 2015-05-19
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

0
Comment
Question by:SimonJohnG
  • 4
  • 4
9 Comments
 
LVL 45

Accepted Solution

by:
Vitor Montalvão earned 500 total points
ID: 40314263
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
 

Author Comment

by:SimonJohnG
ID: 40314270
Hi Vitor,

Where would I place this?

Regards
S
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 40314275
Should be in the line before you get the error. Should be line 13, right?
0
 

Author Comment

by:SimonJohnG
ID: 40314492
Thank you but is there any method so the directory listing can continue? Say all files except those that cannot be successfully listed?
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 40314502
Then I think you need to check for those exceptions in your EnumerateFolder procedure, inside the For Each objFile loop.
0
 

Author Comment

by:SimonJohnG
ID: 40314573
If only I knew how to do that which I don't.

Thank you  for the suggestion
0
 

Author Comment

by:SimonJohnG
ID: 40314710
Just noticed that the files are not invalid file names, they are filenames with Japanese characters, anyway of getting around this?

Regards
S
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 40314723
Not really. Sorry.
0
 
LVL 12

Expert Comment

by:jkaios
ID: 40315897
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

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Recently I finished a vbscript that I thought I'd share.  It uses a text file with a list of server names to loop through and get various status reports, then writes them all into an Excel file.  Originally it was put together for our Altiris server…
I met Paul Devereux (@pdevereux) today when I responded to his tweet asking “Anybody know how to automate adding files from disk to a folder in #outlook  ?”.  I replied back and told Paul that using automation, in this case scripting, to add files t…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

707 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now