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?

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

erro tempo de execução 1004 excel

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.

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“.

Erro 1004: O método 'Range' do objeto '_Global' falhou

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

O método 'Range' do objeto '_Global' falhou

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).

como resolver o erro 1004

Ao executar o código, iremos receber o erro 1004.


erro 1004 macro excel

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:

O método Select da classe Range falhou

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:

Erro 1004: O método Activate da classe Range falhou

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.

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).

O Microsoft Excel não pode acessar o arquivo

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:

  1. Faça uma execução de código passo a passo para ver em qual linha ocorre o erro.
  2. Certifique-se de verificar todos os nomes das pastas de trabalho às quais você está se referindo.
  3. Você também pode usar um código VBA para verificar se uma pasta de trabalho já está aberta ou não.
  4. 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:

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *