Página 1 de 1

Esperar aplicativo externo rodar (Shell) antes de continuar.

Enviado: 25 Jan 2016 às 15:59
por DarlanSantos
Prezados. Gostaria por gentileza de uma ajuda sobre o uso da função Shell.
Fiz uma macro para gerar gerar relatórios baseados em dados e gráficos.
As planilhas são calculadas e organizadas com a macro.
Os gráficos são gerados por um aplicativo *.exe e somente depois são inseridos no relatório via macro.
O problema é que a macro não espera o aplicativo gerar os gráficos, dando assim um erro.
Gostaria de ajuda para informar na macro para esperar o aplicativo rodar e continuar a macro apenas quando ele terminar (rodar em série e não em paralelo).
Segue trecho da macro onde executo o aplicativo externo para gerar meus gráficos.
_____________________________________________________________________
Sub macro()
'
Application.Goto Reference:="macro"

'Limpar dado mensal da pasta mes
Plan2.Activate
Plan2.Range("A1:Z6000").Value = ""

' Roda executável para gerar gráficos desejados
ChDir Application.ThisWorkbook.Path
Dim RetVal
RetVal = Shell("C:\caminho\WTGraphR10b.exe", 1)

Restante da macro...
____________________________________________________________________

Agradeço

Esperar aplicativo externo rodar (Shell) antes de continuar.

Enviado: 26 Jan 2016 às 09:00
por laennder
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1

wsh.Run "C:\caminho\WTGraphR10b.exe", windowStyle, waitOnReturn

Fontes:
http://stackoverflow.com/questions/1595 ... o-complete
http://stackoverflow.com/questions/8902 ... rmat-cells

Re: Esperar aplicativo externo rodar (Shell) antes de contin

Enviado: 26 Jan 2016 às 13:06
por DarlanSantos
Prezado,

Obrigado pela resposta.
Quanto da implementação, apresentou erro indicando " Erro em tempo de execução '-2147024894 (80070002)':"
"O método 'Run' do objeto 'IWshShell3' falhou."
Consegui identificar a causa do erro. Na descrição do caminho para o .exe não pode haver espaço tipo "C:\Users\Documents\015 Programas\....). Onde a forma correta deveria ser tipo "C:\Users\Documents\015Programas\....).
Fazendo esse ajuste, tudo funcionou corretamente.

Obrigado