A maioria dos desenvolvedores VBA conhecem a função Shell, que permite executar aplicativos baseados em seu caminho completo, por exemplo:
1 | Shell("C:\Aplicativo.exe") |
Porém, esta rotina se aplica apenas a executáveis. Caso fosse necessário abrir determinado arquivo, por exemplo, um documento do Word, existem dois caminhos:
– Passar o caminho do documento como parâmetro para o aplicativo usando a própria função Shell, por exemplo:
1 | Shell ("WINWORD" & " " & """C:\temp\documento.doc""") |
– Usar a função ShellExecute.
A função ShellExecute é capaz de “executar” um determinado arquivo, abrindo o arquivo associado a este, parâmetro determinado pelo Windows. É útil quando sabemos apenas o caminho do arquivo, e não de seu aplicativo, até porque isso pode mudar de computador para computador. Um exemplo do código pode ser visto abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Const SW_SHOW = 1 Const SW_SHOWMAXIMIZED = 3 Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Sub AbrirArquivo() On Error Resume Next Call ShellExecute(0, "open", "caminho do arquivo", "argumentos", _ "pasta onde está localizado o arquivo", _ SW_SHOWMAXIMIZED) End Sub |
As constantes declaradas são apenas para auxiliar a chamada da função. Perceba que é necessário apenas saber o caminho do arquivo. Os parâmetro “argumentos” pode ser vazio caso não seja necessário.
É mais uma alternativa para facilitar a manipulação de arquivos sem fazer referências diretas em nosso aplicativo.
Bom proveito!