VBScript - Como fazer o programa esperar até o processo terminar?

Eu tenho um problema em um VBScript que estou usando com uma macro VBA / Excel e um HTA. O problema é apenas o VBScript, eu tenho os outros dois componentes, ou seja, a macro VBA e front-end HTA funcionando perfeitamente. Mas antes de explicar o problema, acho que para você me ajudar, devo ajudá-lo a entender o contexto do VBScript.

Portanto, basicamente todos os componentes (VBScript, macro VBA e HTA) são partes de uma ferramenta que estou construindo para automatizar algumas tarefas manuais. É praticamente assim:

A - HTA

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

O usuário seleciona alguns arquivos do HTA / GUI.Dentro do HTML do HTA há algum VBScript dentro das tags "SCRIPT" que passa os usuários 4 arquivos de entrada como argumentos para um VBScript (executado por WScript.exe - você pode consultar a nota 1 para maior clareza aqui)O roteiro, vamos chamá-lomyScript.vbs de agora em diante, lida com os 4 argumentos, 3 dos quais são arquivos específicos e o 4º é um local de caminho / pasta que contém vários arquivos - (veja também a nota 2 para maior clareza)B - myScript.vbs

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

myScript.vbs abre os primeiros 3 argumentos que são arquivos do Excel. Um deles é um arquivo * .xlsm que possui minha macro VBA.

Em seguida, myScript.vbs usa o argumento 4, que é um PATH, para uma pasta que contém vários arquivos e atribui isso a uma variável para passar a um objeto FileSystemObject ao chamar GetFolder, ou seja,

<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>

A partir daqui, eu crio um loop para que eu possa abrir sequencialmente os arquivos dentro da pasta e, em seguida, executar minha macro, ou seja,

<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>

Por favor, note que quando os 3 primeiros arquivos do Excel forem abertos (controlados pelo código antes do loop e não mostrados aqui, pois não estou tendo nenhum problema com essa parte), devo mantê-los abertos.

São os arquivos na pasta (que foram passados ​​como o quarto argumento) que devem abrir e fechar sequencialmente. Mas entre a abertura e o fechamento, eu preciso da macro VBA / (escrita em um dos três arquivos do Excel abertos anteriormente)para executar cada vez o loop itera e abre um novo arquivo da pasta (espero que você siga - se não, por favor me avise :)).

O problema que estou tendo é que os arquivos na pasta abrir e fechar, abrir e fechar, n número de vezes (n = # de arquivos na pasta, naturalmente) sem aguardar a execução da macro. Isso não é o que eu quero. Eu tentei a instrução WScript.sleep com um atraso de 10 segundos após a declaração 'x1.Run strMyMacro', mas sem sucesso.

Alguma ideia?

Obrigado, QF.

NOTAS:

1 - Para simplicidade / clareza, é assim:

<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 O HTA emprega um pedaço de JavaScript que retira o arquivo de entrada do 4º usuário (HTML: INPUT TYPE = "file") e o transmite para o VBScript dentro do HTA. Isso me leva ao problema de não poder selecionar exclusivamente uma PASTA em HTML.

questionAnswers(4)

yourAnswerToTheQuestion