Usando a função ShellExecute no VBA | Tomás Vásquez – Blog
A maioria dos desenvolvedores VBA conhecem a função Shell, que permite executar aplicativos baseados em seu caminho completo, por exemplo:
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:
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:
Const SW_SHOW = 1
Sub AbrirArquivo()
Call ShellExecute(0, "open", "caminho do arquivo", "argumentos", _
"pasta onde está localizado o arquivo", _
SW_SHOWMAXIMIZED)
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.