Uma funcionalidade interessante de aplicativos Office é a possibilidade de executar macros de outros arquivos, mesmo que estes não estejam abertos.
Para fazer um teste, começe criando um arquivo, no Excel mesmo e crie a seguinte macro:
1 2 | Public Sub testeMacro() MsgBox "Executou a macro em testeMacro.xls!" |
End Sub
A observação aqui é que a macro deve obrigatoriamente Pública, como é mostrado neste exemplo. Grave a pasta de trabalho com o nome testeMacro.xls. Abra agora uma nova pasta de trabalho e nesta, crie uma nova macro com a seguinte código:
1 2 3 | Sub teste() Application.Run "testeMacro.xls!testeMacro" End Sub |
O método Run serve exatamente para execução de macros no VBA. Salve este arquivo com qualquer nome, porém, na mesma pasta onde a pasta testeMacro.xls foi salva. Agora, execute a macro teste clicando em F5 e veja que o resultado é a MsgBox com a mensagem “Executou a macro em testeMacro.xls!”, conforme haviámos configurado.
Caso queira executar a macro que esteja localizada em algum outro arquivo, basta ao invés de informar somente o nome do arquivo, usar o caminho completo, por exemplo:
1 | Application.Run "C:\temp\arquivo.xls!outraMacro" |
É possível inclusiva passar parâmetros para tal função, bastando apenas informá-los após a chamada da função, por exemplo, para a macro:
1 2 3 | Public Sub testeMacro(ByVal mensagem As String) MsgBox mensagem End Sub |
A chamada seria:
1 2 3 | Sub teste() Application.Run "testeMacro.xls!testeMacro", "Minha mensagem" End Sub |
Abraços
Tomás Vásquez
Boa tarde.
Trenho um arquivo xls com varias planilhas… e tenho macros que atualizam a cada 10 segundo,exemplo Plan1 tem a macro X, como faço para que fique atualizando a macro, e eu continuando trabalhando na Plan2 sem que quando rode a macro retorne para a Plan1???
Eder,
Podemos discutir isso no fórum: http://www.tomasvasquez.com.br/forum/
Nos vemos lá!
Abraços
Tomás
No caso se eu quiser exportar a macro e simplesmente executa-la em qualquer arquivo é possivel?
como eu faria isso?
Colega,
Não entendi a pergunta. De toda forma, o melhor lugar para falarmos sobre ela é no nosso fórum:
http://www.tomasvasquez.com.br/forum
Nos vemos lá!
Abraços
Tomás