Método Application.Run (Excel)

Executa uma macro ou chama uma função. Pode ser usada para executar uma macro escrita em Visual Basic ou no idioma da macro do Microsoft Excel, ou para executar uma função em uma DLL ou XLL.

Sintaxe

mais simples. executar (macro, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30)

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Macro Opcional Variantes Para executar a macro.

Pode ser uma cadeia de caracteres com o nome da macro, um objeto Range indicando onde está a função ou uma ID de registro para uma função DLL (XLL) registrada.

Se for usada uma cadeia de caracteres, ela será avaliada no contexto da planilha ativa.
arg1–arg30 Opcional Variantes Um argumento que deve ser passado para a função.

Valor de retorno

Variant

Comentários

É possível usar argumentos nomeados com esse método. Os argumentos devem ser passados por posição.

O método Run retorna o que a macro chamada retornar.

Tratamento de erros

Se a macro chamada gerar um erro de runtime que ela não manipula (como um erro gerado pelo método Err.Raise ou uma divisão por zero), o erro não será passado para o procedimento que chama Run. O Excel exibe a caixa de diálogo de erro de runtime nesse ponto, mesmo que o procedimento de chamada tenha um manipulador de erros habilitado definido com o On Error GoTo. A caixa de diálogo é exibida mesmo quando o Excel não está visível, portanto, o código autônomo é interrompido até que alguém responda a ele. Se o usuário escolher End, todas as macros em execução serão interrompidas, incluindo o procedimento de chamada. Quando Run é chamado por meio de automação, o cliente recebe um erro genérico em vez do número e da descrição do erro original.

Erros que o próprio método Run gera, como o erro que ocorre quando a macro especificada não pode ser encontrada, são passados para o procedimento de chamada e podem ser tratados por seu manipulador de erros.

Assim como acontece com uma chamada de procedimento comum, uma instrução End na macro chamada interrompe todas as macros em execução, incluindo o procedimento de chamada, portanto, a instrução após Run não é executada. As variáveis de nível de módulo são redefinidas, incluindo aquelas na pasta de trabalho que contém a macro chamada e na pasta de trabalho do procedimento de chamada.

As alterações que a macro chamada faz em um argumento ByRef não são retornadas ao procedimento de chamada. Para relatar uma falha ao chamador, trate os erros dentro da macro chamada e retorne um valor que indique sucesso ou falha, conforme mostrado no exemplo a seguir.

Exemplo

Neste exemplo, a função ImportData na pasta de trabalho Tools.xlsm lida com seus próprios erros e retorna False se falhar. O procedimento de chamada, em outra pasta de trabalho, verifica o valor retornado em vez de depender de seu próprio manipulador de erros. Tools.xlsm deve estar aberto quando Executar for chamado.

' In Tools.xlsm. Called through Application.Run
Public Function ImportData(ByVal filePath As String) As Boolean
    On Error GoTo ErrorHandler
    Workbooks.Open filePath
    ' ... process the data ...
    ImportData = True
    Exit Function
ErrorHandler:
    Debug.Print "ImportData failed: " & Err.Number & " " & Err.Description
    ImportData = False
End Function

' In the calling workbook
Sub CallImportData()
    If Not Application.Run("'Tools.xlsm'!ImportData", "C:\Data\input.xlsx") Then
        MsgBox "The import failed."
    End If
End Sub

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.