VBA Shell

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.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave