Erro em Tempo de Execução 1004 | Como Solucionar?
Quer aprender a solucionar o Erro em Tempo de Execução 1004? Então você está no lugar certo!
Quando se trata de Excel e VBA, é muito comum a presença de erros que impedem a correta execução dos códigos. Um desses erros é o famoso Erro 1004 que costuma dar muita dor de cabeça para usuários de Excel.
Este erro pode ocorrer por diferentes motivos e, pensando neste assunto, separamos a seguir algumas das principais razões para você estar recebendo o erro 1004 no Excel e como solucioná-lo em cada caso. Confira!
Navegue pelo tópico de seu interesse:
- O que é Erro em Tempo de Execução 1004?
- Causa 1: Erro 1004: Esse nome já foi usado. Escolha outro
- Causa 2: Erro 1004: O método ‘Range’ do objeto ‘_Global’ falhou
- Causa 3: Erro 1004: O método Select da classe Range falhou
- Causa 4: Erro 1004: O método Activate da classe Range falhou
- Causa 5: Erro 1004: O método ‘Open’ do objeto ‘Workbooks’ falhou
- Causa 6: Erro 1004: O Microsoft Excel não pode acessar o arquivo
- Como corrigir o Erro em Tempo de Execução 1004
O que é Erro em Tempo de Execução 1004?
O Erro em Tempo de Execução 1004 é um erro no VBA e ocorre durante a execução do código.
Este é um desses erros irritantes de tempo de execução que ocorrem principalmente ao trabalhar com arquivos do Excel. Ou, ao tentar gerar uma macro no documento do Excel e, como resultado, você não consegue fazer nada na sua Pasta de Trabalho.
Esse erro pode causar sérios problemas enquanto você trabalha com aplicativos do Visual Basic (VBA) e pode travar o programa ou o sistema ou, em alguns casos, congelar por algum tempo. Este erro é enfrentado por qualquer versão do MS Excel, como o Excel 2007/2010/2013/2016/2019, Excel 365 entre outros.
Confira a seguir as principais causas deste erro e como solucioná-lo.
Causa 1: Erro em Tempo de Execução 1004: Esse nome já foi usado. Escolha outro
O Erro em Tempo de Execução 1004 pode ocorrer caso você esteja tentando renomear uma planilha por meio do VBA.
Neste caso, se o nome da planilha já existir e se você tentar atribuir o mesmo nome a outra planilha, o VBA retornará o Erro em Tempo de Execução ‘1004’. Esse nome já foi usado. Escolha outro.
Por exemplo, veja o código abaixo.
Sub Exemplo1() Worksheets("Planilha2").Name = "Planilha1" End Sub
Observe que estamos tentando renomear a Planilha2 como Planilha1. No entanto, já temos uma planilha chamada “Planilha1”.
Se executarmos este código usando a tecla F5 ou manualmente, iremos obter o Erro em Tempo de Execução ‘1004’. Esse nome já foi usado. Escolha outro.
Solução: Se este for o seu caso, tente renomear a planilha com um nome diferente.
Causa 2: Erro 1004: O método ‘Range’ do objeto ‘_Global’ falhou
O erro 1004 também pode ocorrer quando tentamos acessar um intervalo nomeado no Excel com um erro de ortografia ou que não existe na planilha na qual estamos nos referindo.
Para melhor compreensão, observe o exemplo abaixo onde criamos um intervalo nomeado com o nome “Títulos“.
Se utilizarmos um código para seleção do intervalo nomeado, vamos obter o resultado correto. Veja o exemplo abaixo:
Sub Exemplo2() Range("Títulos").Select End Sub
Por outro lado, se você mencionar no seu código um intervalo nomeado errado ou inexistente, irá obter o Erro em Tempo de Execução 1004. O método ‘Range’ do objeto ‘_Global’ falhou.
Sub Exemplo2() Range("Título").Select End Sub
Veja no exemplo abaixo onde mencionamos o intervalo nomeado incorretamente (Neste caso, faltando uma letra no final).
Ao executar o código, iremos receber o erro 1004.
Solução: Se este for o seu caso, verifique se o seu código está tentando acessar um intervalo nomeado incorreto ou inexistente e corrija-o.
Causa 3: Erro em Tempo de Execução 1004: O método Select da classe Range falhou
Outro motivo para você receber o Erro 1004 no Excel é quando você está tentando selecionar as células diferentes da planilha ativa sem tornar a planilha selecionada ou ativa.
Por exemplo, veja o código abaixo:
Sub Exemplo3() Worksheets("Planilha1").Range("A1:A5").Select End Sub
O código acima está dizendo para o Excel selecionar as células A1 a A5 na planilha “Planilha1”. Para experimentar, a planilha ativa atual é “Planilha2”, não “Planilha1”.
Ao executar este código usando a tecla F5 ou manualmente, veja o que acontece:
Neste caso, temos o Erro em Tempo de Execução 1004: O método Select da classe Range falhou. Isso porque sem ativar a planilha, tentamos selecionar as células dessa planilha. Então, primeiro, precisamos ativar a Planilha1 antes de selecionar as células. Abaixo está o código correto.
Sub Exemplo3() Planilha1.Select Worksheets("Planilha1").Range("A1:A5").Select End Sub
Causa 4: Erro 1004: O método Activate da classe Range falhou
Assim como o motivo acima, quando você tenta ativar uma célula ou intervalo de células de uma planilha específica que não está ativa no momento, o Excel exibirá o erro 1004: O método Activate da classe Range falhou.
Por exemplo, veja o código abaixo:
Sub Exemplo4() Sheets("Planilha1").Range("A1").Activate End Sub
Para experimentar, a planilha ativa atual é “Planilha2”, não “Planilha1”. Se executarmos manualmente ou usando a tecla F5, obteremos o erro abaixo:
Solução: Sem ativar a planilha, não podemos ativar as células nela. Então, primeiro, ative a planilha e, em seguida, ative as células dessa planilha. Abaixo está o código correto:
Sub Exemplo4() Planilha1.Activate Sheets("Planilha1").Range("A1").Activate End Sub
Causa 5: Erro em Tempo de Execução 1004: O método ‘Open’ do objeto ‘Workbooks’ falhou
Se você estiver tentando abrir um arquivo do Excel usando um caminho, mas essa pasta de trabalho não estiver lá, talvez ela tenha sido movida, excluída ou renomeada. Nesse caso, o VBA mostrará novamente um erro de tempo de execução 1004.
Por exemplo, veja o código abaixo:
Sub Exemplo5() Workbooks.Open Filename:="C:\Users\Hermes\ExcelEasy\PlanilhaABC.xlsx" End Sub
Este código diz para abrir o arquivo “PlanilhaABC.xlsx” no caminho da pasta mencionada.
Quando não houver nenhum arquivo na pasta mencionada com o nome especificado, obteremos o Erro em Tempo de Execução 1004: O método ‘Open’ do objeto ‘Workbooks’ falhou.
Solução: Verifique o local correto do arquivo que você está tentando abrir. Em algumas ocasiões, o problema pode estar no caminho e não necessariamente no nome do arquivo.
Causa 6: Erro 1004: O Microsoft Excel não pode acessar o arquivo
Esse erro também está relacionado à pasta de trabalho. Portanto, quando você tenta abrir uma pasta de trabalho com o nome para o qual uma pasta já existe e está aberta no momento, o VBA mostrará o erro de tempo de execução 1004 (o método de abertura das pastas de trabalho do objeto falhou).
Por exemplo, veja o código abaixo:
Sub Exemplo6() Dim wb As Workbook Set wb = Workbooks.Open("\\PlanilhaMensal.xlsm", ReadOnly:=True, CorruptLoad:=xlExtractData) End Sub
No exemplo acima, estamos tentando abrir uma pasta de trabalho que já está aberta e o VBA nos mostrou um erro de tempo de execução (1004).
Solução: Verifique se a Pasta de Trabalho que você está tentando abrir já está aberta em seu computador.
Como corrigir o Erro em Tempo de Execução 1004
Conforme vimos, o erro 1004 é um erro em tempo de execução que ocorre durante a execução de um código VBA. E todos os erros que discutimos acima são devidos a erros humanos ao escrever o código logo, seguindo os pontos acima você poderá corrigi-lo e até mesmo evitá-lo futuramente.
Deste modo, de maneira resumida podemos dizer que para a correção deste erro você deverá se atender aos pontos:
- Faça uma execução de código passo a passo para ver em qual linha ocorre o erro.
- Certifique-se de verificar todos os nomes das pastas de trabalho às quais você está se referindo.
- Você também pode usar um código VBA para verificar se uma pasta de trabalho já está aberta ou não.
- E use o método activate para ativar uma planilha antes de fazer referência a uma célula ou intervalo dela.
Confira também as seguintes dicas de Excel:
- Como Copiar e Colar no VBA – Passo a Passo
- Erros no VBA Excel – Tudo que você precisa saber!
- Como Habilitar Macro no Excel – Passo a Passo
- Como Usar If Then Else no VBA – Passo a Passo
- Variáveis no VBA Excel – Guia Completo
- Loops VBA no Excel: For Next, Do While, Do Until, For Each (Com Exemplos)
- Como Aprender VBA? Um Guia para Iniciantes
- Como manipular planilhas do Excel com o VBA (com exemplos)
E então, o que achou deste guia sobre este erro no Excel VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.