Look at this article which explains some possible reasons:
Why do I get 'Invalid procedure call or argument'?
This often happens because you used a
VBScript "friendly name" constant in
place of its integer equivalent.
Visual Basic understands these
friendly names, such as
FileSystemObject's 'forAppending' and
Another possible cause is trying to
use a string operation (like Mid(),
InStr(), Left() or Right()) on a NULL
Another possibility is that you are
otherwise think that string lengths
Still one more possibility is that you have unexpected characters in an FSO writeline call.
This Microsoft Support article could also be helpful:
"Invalid Procedure Call" Error Message or Access Violation When You Try to Assign User-Defined Type to Variant
When you assign a user-defined type to
a Variant in a multithreaded
environment (for example, in Microsoft
COM+ or in Microsoft Internet
Information Server [IIS]), you may
receive an "Invalid Procedure Call"
error message or an access violation
(0xC0000005) in MSVBVM60.dll.