Usuário com melhor resposta
Controlar outros aplicativos a partir do VBA do Excel

Pergunta
-
Bom dia!
Estou desenvolvendo uma macro no VBA do Excel e um dos objetivos é abrir um aplicativo proprietário (não faz parte do MS-Office) e realizar alguns comandos neste (criar um novo arquivo, editar, salvar, etc.). Para abrir o aplicativo, utilizei com sucesso o comando "Shell", porém gostaria de saber se é possível realizar outras ações.
Desde já, agradeço a ajuda!
Respostas
-
Este tópico é antigo, mas acho que vale a pena comenta-lo, porque caí nele após fazer uma consulta no Google, então acho importante fazer uma ressalva.
Realmente, é possível usar SendKeys para resolver esse tipo de problema e, como o Lucas disse, não é recomendável. Claro, mas se usando SendKeys é a única maneira de se resolver, que seja com SendKeys.
No entanto, ao longo dos anos, consegui substituir totalmente o SendKeys por outras técnicas. Basicamente, Utilizo chamadas APIs como FindWindow, FindWindowEx, GetWindowText, GetWindowTextLenght e SendMessage. Claro que a técnica é um pouco mais difícil, mas uma vez dominada, suas aplicações irão executar de um modo bem mais confiável.
Há um exemplo que gosto muito neste link: http://www.siddharthrout.com/2013/04/24/unprotecting-vba-project-password-using-a-password-that-you-know/
Nesse exemplo, é mostrado como desproteger o projeto VBA de uma pasta de trabalho sem usar o SendKeys.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 20 de dezembro de 2014 11:24
Todas as Respostas
-
Cara, eu já passei por uma situação parecida com a sua em VB6 , eu tive uma solução mas ela, *** NAO E RECOMENDADA ***, ela é uma gambiarra literalmente, no VB6 (creio que em vba tambem tenha) tem uma função sendkeys que envia teclas, e da para controlar os cliques do mouse, ou seja, eu fiz um esquema com pausas que, manda as teclas que eu quero e clica nos lugares que eu quero, mas so funciona naquele computador com aquela resolução etc e tal, da uma olhada no google (ou no site do macoratti) , na função SENDKEYS, porem eu repito, eu nao recomendo porque voce pode fazer alguma cagada se colocar dentro de um loop ou algo do tipo.
-
Este tópico é antigo, mas acho que vale a pena comenta-lo, porque caí nele após fazer uma consulta no Google, então acho importante fazer uma ressalva.
Realmente, é possível usar SendKeys para resolver esse tipo de problema e, como o Lucas disse, não é recomendável. Claro, mas se usando SendKeys é a única maneira de se resolver, que seja com SendKeys.
No entanto, ao longo dos anos, consegui substituir totalmente o SendKeys por outras técnicas. Basicamente, Utilizo chamadas APIs como FindWindow, FindWindowEx, GetWindowText, GetWindowTextLenght e SendMessage. Claro que a técnica é um pouco mais difícil, mas uma vez dominada, suas aplicações irão executar de um modo bem mais confiável.
Há um exemplo que gosto muito neste link: http://www.siddharthrout.com/2013/04/24/unprotecting-vba-project-password-using-a-password-that-you-know/
Nesse exemplo, é mostrado como desproteger o projeto VBA de uma pasta de trabalho sem usar o SendKeys.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 20 de dezembro de 2014 11:24