VBScript - ¿Cómo hacer que el programa espere hasta que el proceso haya finalizado?

Tengo un problema en un VBScript que estoy usando con una macro VBA / Excel y una HTA. El problema es solo el VBScript, tengo los otros dos componentes, es decir, la macro VBA y el HTA front-end funcionando perfectamente. Pero antes de explicar el problema, creo que para que me ayudes debo ayudarte a entender el contexto de VBScript.

Entonces, básicamente todos los componentes (VBScript, VBA macro y HTA) son partes de una herramienta que estoy creando para automatizar algunas tareas manuales. Es más o menos así:

A - HTA

~~~~~~~~~~~~

El usuario selecciona algunos archivos de la HTA / GUI.Dentro del HTML de la HTA, hay algunos VBScript dentro de las etiquetas "SCRIPT" que pasan los 4 archivos de entrada de los usuarios como argumentos a un VBScript (ejecutado por WScript.exe; puede consultar la nota # 1 para mayor claridad aquí)El guión, llamémoslo.myScript.vbs de ahora en adelante, maneja los 4 argumentos, 3 de los cuales son archivos específicos y el 4º es una ubicación de ruta / carpeta que contiene múltiples archivos - (también vea la nota # 2 para mayor claridad)B - myScript.vbs

~~~~~~~~~~~~

myScript.vbs abre los primeros 3 argumentos que son archivos de Excel. Uno de ellos es un archivo * .xlsm que tiene mi macro VBA.

myScript.vbs luego usa el cuarto argumento, que es una RUTA a una carpeta que contiene varios archivos y la asigna a una variable para pasarla a un objeto FileSystemObject al llamar a GetFolder, es decir.

<code>... 'Other code here, irrelevant for this post
Dim FSO, FLD, strFolder
... 'Other code here, irrelevant for this post
arg4 = args.Item(3)
strFolder = arg4
Set FSO = CreateObject("Scripting.FileSystemObject"
'Get a reference to the folder you want to search
Set FLD = FSO.GetFolder(strFolder)
...
</code>

Desde aquí, creo un bucle para poder abrir secuencialmente los archivos dentro de la carpeta y luego ejecutar mi macro, es decir,

<code>...
Dim strWB4, strMyMacro
strMyMacro = "Sheet1.my_macro_name"

'loop through the folder and get the file names
For Each Fil In FLD.Files

    Set x4WB = x1.Workbooks.Open(Fil)
x4WB.Application.Visible = True

x1.Run strMyMacro

x4WB.close
Next 
...
</code>

Tenga en cuenta que cuando los primeros 3 archivos de Excel se hayan abierto (controlados por código antes del bucle, y no se muestren aquí porque no tengo ningún problema con esa parte), debo mantenerlos abiertos.

Son los archivos en la carpeta (que se pasaron como el 4to argumento) los que deben abrirse y cerrarse secuencialmente. Pero entre la apertura y el cierre, necesito el VBA / macro (escrito en uno de los 3 archivos de Excel abiertos previamente)correr cada vez el bucle se repite y abre un nuevo archivo de la carpeta (espero que lo siga; si no, hágamelo saber :)).

El problema que tengo es que los archivos en la carpeta se abren y se cierran, se abren y se cierran, n número de veces (n = número de archivos en la carpeta, naturalmente) sin esperar a que se ejecute la macro. Esto no es lo que quiero. He intentado la declaración WScript.sleep con un retraso de 10 segundos después de la declaración 'x1.Run strMyMacro', pero fue en vano.

¿Algunas ideas?

Gracias, QF.

NOTAS:

1 - Por simplicidad / claridad, así es como:

<code>    strCMD = cmd /c C:\windows\system32\wscript.exe myScript.vbs <arg1> <arg2> <arg3> <arg4>
    'FYI - This is run by creating a WShell object, wsObj, and using the .run method, i.e. WShell.run(strCMD)
</code>

2 La HTA emplea un fragmento de JavaScript que elimina el cuarto archivo de entrada de los usuarios (HTML: INPUT TYPE = "file") y lo pasa al VBScript dentro de la HTA. Esto me lleva a solucionar el problema de no poder seleccionar exclusivamente una CARPETA en HTML.

Respuestas a la pregunta(4)

Su respuesta a la pregunta