none
Controlar outros aplicativos a partir do VBA do Excel RRS feed

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

    sexta-feira, 11 de julho de 2014 13:21

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

    sábado, 20 de dezembro de 2014 11:24
    Moderador

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.
    sexta-feira, 11 de julho de 2014 14:58
  • 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

    sábado, 20 de dezembro de 2014 11:24
    Moderador