Este tutorial demonstrará como usar a função VBA Shell.
Podemos usar o VBA Concha função para chamar um programa executável separado de dentro de um programa VBA. Por exemplo, se precisarmos abrir o Bloco de notas no Excel, podemos usar a função VBA Shell para fazer isso. Se a chamada do Shell for bem-sucedida, ele retornará o valor TaskID do Windows do programa que chamou. Se a chamada Shell falhar, ele retornará zero.
Concha tem dois parâmetros de entrada: um obrigatório nome do caminho para o programa chamar, e um opcional estilo de janela valor controlando o estilo da janela onde o programa será executado. o nome do caminho o valor pode incluir o caminho / diretório e os argumentos do programa.
Call Shell
Este código pode fazer parte de uma macro para ser executado Bloco de anotações usando o VBA Call comando para chamar o Concha função.
1 | Call Shell ("notepad", vbNormalFocus) |
Por exemplo:
Shell espera
Podemos usar o VBA Esperar comando para atrasar a chamada do Concha comando por um período específico de tempo.
12 | Application.Wait (Now + TimeValue ("00:00:05"))Call Shell ("notepad", vbNormalFocus) |
Portanto, 5 segundos se passarão antes que o comando Shell seja chamado.
Retornando um erro da função Shell
Se tivermos um erro em nosso código ao chamar o Concha função, e o erro será retornado e nosso código entrará no modo de depuração.
Por exemplo, nesta macro, soletramos “bloco de notas” incorretamente.
1 | Call Shell ("bloco de notas", vbNormalFocus) |
O resultado da execução desta macro será:
Programação VBA | O Code Generator funciona para você!
Abra um arquivo existente com o Shell
Se tivermos um arquivo específico que desejamos abrir com o Concha comando, podemos incluir o nome do arquivo em nosso código.
1 | Chamar Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Se escrevermos o nome do arquivo incorretamente, o arquivo não será encontrado e uma caixa de mensagem aparecerá perguntando se desejamos criar um novo arquivo.
Parâmetros usados pela função Shell
o Concha A função tem 2 parâmetros - o nome do programa a ser chamado e o estilo do Windows que o programa vai usar. Temos usado o vbNormalFocus nos exemplos acima, o que significa que quando o programa (neste caso o Bloco de notas) é aberto, ele tem o foco e abre na posição e tamanho padrão no PC.
o Concha oferece cinco outras opções:
vbHide Esconde a janela e define o foco nessa janela
vbMinimizedFocus Exibe a janela como um ícone com foco
vbMaximizedFocus Abre o programa em uma janela maximizada com foco
vbNormalNoFocus Restaura a janela em sua posição e tamanho mais recentes
vbMinimizedNoFocus Mostra a janela como um ícone e a janela atualmente ativa permanece ativa
Retornando um ID de Processo do Comando Shell
Quando executamos o Concha Comando, ele retorna um ID de Processo ou Tarefa. Podemos armazenar o ID do processo em uma variável e usar esse ID do processo na execução de outro comando - por exemplo, o TaskKill comando para fechar o arquivo do bloco de notas.
123456 | Sub TestPIDDim ProcessID como inteiroprocessID = Shell ("notepad", vbNormalFocus)Call Shell ("Taskkill / F / PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))End Sub |
Na primeira linha, o Bloco de notas é aberto e o ID do processo é atribuído a um valor pelo Windows. Armazenamos esse valor na variável ProcessID. Em seguida, usamos o TaskKill para forçar o Bloco de notas a fechar a instância do Bloco de notas que acabamos de abrir. o / F trocar forças Bloco de anotações para terminar, e o / PID mudar diz TaskKill procurar o bloco de notas ID do processo valor. A função CStr converte ProcessID para o formato de string que o Shell e MsgBox na próxima linha, ambos precisam.
Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!
Programação VBA | O Code Generator funciona para você!
Chamando outros programas com a Shell
O Shell abrirá qualquer outro programa do Windows. Por exemplo, este código chama Excele abre o arquivo Excel ‘example_workbook.xlsx’:
1 | Call Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
Isso mostra o arquivo aberto:
ShellExecute e ShellExecuteEx vs o Comando Shell
O espaço de programação do Windows oferece ShellExecute e ShellExecuteEx funções que chamam programas externos a partir do código de software. Em comparação com a função VBA Shell, essas funções do Windows oferecem mais flexibilidade, mas o VBA não oferece suporte a elas e, portanto, este artigo não as cobre.