VBA: Uso do comando SHELL com as aplicações VBA
Veja também:
Talvez a utilização deste comando SHELL seja rara, mas como desejo ser abrangente deixarei um registro sobre o assunto.
Tanto no MS Excel, quanto no MS Access e nas demais aplicações MS Office que utilizam o VBA, sempre recebemos uma mensagem de erro "chamada de procedimento inválida" quando tentamos utilizar quaisquer comandos principais do MS-DOS com a função SHELL. Por quê?
Isso ocorre porque a função SHELL no VBA não inicia uma instância específica do interpretador de comando do MS-DOS (Command.com ou CMD). Ou seja, os principais comandos do MS-DOS não estão presentes.
Somente arquivos que têm as extensões .exe, .com ou .bat podem ser executados através da função de SHELL sem maiores transtornos. Os comandos que retornam a mensagem de erro "chamada de procedimento inválida", são: DIR, CLS, DELETE, CD, MD, RD, MKDIR, RMDIR, COPIAR.
Solucione esse problema executando comandos VBA equivalentes:
Execute a maioria das funções fornecidas pelo Command.com através de comandos similares incluídos no VBA:
MS-DOS VBADEL [drive][path]filename Kill "[drive][path]filename"CD [drive][path] ChDir "[drive][path]"MD [drive][path]directory name MkDir "[drive][path]directory name"RD [drive][path]directory name RmDir "[drive][path]directory name"COPY [source] [destination] FileCopy "[source]","[destination]"DIR [path] Dir("[path]",[attributes])
IMPORTANTE: O VBA para os comandos de diretórios de aplicativos não funcionam do mesmo modo como os seus equivalentes no MS-DOS, o qual em muitos casos requer código extra para recuperar um diretório inteiro, por exemplo. Nos casos em que forem absolutamente essenciais o uso dos principais comandos do MS-DOS, sempre será possível chamarmos uma instância do interpretador de comandos manualmente e passar para o comando desejado.
Experimente a seguinte sintaxe:
Let a = Shell("command.com /c [command]", [WindowStyle])
IMPORTANTE: Deve-se incluir /c para que o comando a ser executado ocorra corretamente.
Por exemplo, para executar um comando de diretório em todos os arquivos ocultos no diretório raiz, use a seguinte sintaxe:
Shell("command.com /c dir c:\ /ah", 1)
Em uma sessão do MS-DOS normal quando estiver usando o Windows, o interpretador de comando MS-DOS, Command.com (ou CMD), estará presente para lidar com os comandos de núcleo.
Para mostrar que o interpretador de comando MS-DOS (Command.com ou CMD), não está na memória, use o código VBA a seguir para o comando de aplicativos: a = Shell("MEM /C /P", 1)
Compare isso com a saída do comando MEM quando for executado numa sessão do MS-DOS no Windows. A única diferença é que o Command.com (ou CMD) não esteja na memória dentro do ambiente criado pelo VBA através da função shell de aplicativos.
Hurry Up!
Para mostrar que o interpretador de comando MS-DOS (Command.com ou CMD), não está na memória, use o código VBA a seguir para o comando de aplicativos: a = Shell("MEM /C /P", 1)
Compare isso com a saída do comando MEM quando for executado numa sessão do MS-DOS no Windows. A única diferença é que o Command.com (ou CMD) não esteja na memória dentro do ambiente criado pelo VBA através da função shell de aplicativos.
Hurry Up!
Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com
Nenhum comentário:
Postar um comentário