VBScript only supports arrays (SAFEARRAY) that contain VARIANTs (input and output). VBScript passes [in] VARIANTSs as VT_BYREF|VT_VARIANT and the pvarVal pointer points to a VARIANT of type VT_BYREF|VT_VARIANT|VT_ARRAY which means the SAFEARRAY is in the pparray member. The members of the array are VT_VARIANT, not BYREF.
Угрохал стока времени. Не знаю как у вас, а у меня Visual Basic передает SAFEARRAY в поле parray, а не pparray!
И вообще не может VT_BYREF|VT_VARIANT указывать на VT_BYREF|VT_VARIANT по требованиям Automation.