Veja este artigo que explica algumas possíveis razões:
Por que recebo ' Chamada de procedimento ou argumento inválido '?
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 'forWriting' constants.
ou
Another possible cause is trying to use a string operation (like Mid(), InStr(), Left() or Right()) on a NULL value.
ou
Another possibility is that you are coming over from JavaScript, or otherwise think that string lengths are 0-based.
ou
Still one more possibility is that you have unexpected characters in an FSO writeline call.
Este artigo de suporte da Microsoft também pode ser útil:
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.