Como corrigir o erro de tempo de execução 1004 no Excel

Erro de tempo de execução 1004 é um código de erro relativo ao Microsoft Visual Basic que foi conhecido por afetar os usuários do Microsoft Excel. O erro é mais prevalente no Excel 2003 e no Excel 2007, embora nenhuma versão do aplicativo de planilha popular da Microsoft esteja protegida contra a ameaça que é o Erro de tempo de execução 1004. Na maioria dos casos, os usuários afetados por esse problema veem um deles. duas variações diferentes de erro de tempo de execução 1004. Na sua totalidade, as duas variações do erro de tempo de execução 1004 ler:

Erro em tempo de execução '1004':

Copiar método da classe de planilha falhou ”

Erro em tempo de execução '1004':

Erro definido pelo aplicativo ou definido pelo objeto ”

A mensagem de erro exata que você vê também pode variar um pouco, em alguns casos, embora o código de erro permaneça o mesmo. Independentemente de qual versão do problema ocorrer, no entanto, quase sempre ocorre durante a execução de uma macro no Excel projetada para copiar planilhas e, em seguida, colocar as cópias na mesma pasta de trabalho que a planilha original.

Ao contrário dos piores problemas técnicos, a causa do erro em tempo de execução 1004 no Microsoft Excel é conhecida. Erro de tempo de execução 1004 ocorre quando a macro que você está executando está copiando a planilha original para uma pasta de trabalho com um nome definido que você não salvou e fecha antes de executar a macro. Um exemplo dessa macro pode ser visto no código a seguir:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) Next End Sub 

Desde que a causa do erro em tempo de execução 1004 no contexto do Microsoft Excel é conhecida, como é a resolução. Além de uma solução para esse problema, o que também está disponível para os usuários afetados por ele é uma solução alternativa que pode ser usada no caso de a solução não funcionar ou se a solução não for viável.

A solução:

A solução para esse problema específico é simplesmente editar o código da macro que você está executando para que ela salve e feche periodicamente a pasta de trabalho de destino enquanto faz cópias da (s) planilha (s). O código para uma macro que faz isso seria algo ao longo das linhas do seguinte:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) 'Uncomment this code for the workaround: 'Save, close, and reopen after every 100 iterations: If iCounter Mod 100 = 0 Then oBook.Close SaveChanges:=True Set oBook = Nothing Set oBook = Application.Workbooks.Open("c:\test2.xls") End If Next End Sub 

Nota: O número exato de vezes que você pode copiar uma planilha antes de salvar e fechar a pasta de trabalho em que as cópias estão sendo salvas varia de um caso para outro, pois isso depende do tamanho da planilha da qual você está copiando.

A solução alternativa:

Como dito anteriormente, uma solução alternativa para esse problema específico também existe. Trabalhar com essa questão é uma simples questão de inserir uma nova planilha a partir de um modelo, em vez de criar uma cópia de uma planilha existente. Se você gostaria de contornar este problema, aqui está o que você precisa fazer:

  1. Inicie o Excel .
  2. Crie uma nova pasta de trabalho e exclua todas as planilhas que a pasta de trabalho contém, salve para uma.

  3. Formate a pasta de trabalho.
  4. Adicione qualquer texto, dados e / ou gráficos que você deseja ter no modelo por padrão para a única planilha que a pasta de trabalho agora contém.
  5. Se você estiver usando o Excel 2003 ou anterior, clique em Arquivo > Salvar como . Se você estiver usando o Excel 2007 ou posterior, por outro lado, clique no botão Microsoft Office e clique em Salvar como .

  6. No campo Nome do arquivo :, digite o que você deseja que o modelo seja chamado.
  7. Abra o menu suspenso ao lado do campo Salvar como tipo: e clique no Modelo do Excel (.xlt), se estiver usando o Excel 2003 ou anterior, ou Modelo do Excel (.xltx), se estiver usando o Excel 2007 ou posterior para selecioná-lo.

  8. Clique em Salvar .

  9. Depois de criar o modelo com êxito, você pode inseri-lo programaticamente usando a seguinte linha de código:

    Sheets.Add Type: = caminho \ nome do arquivo

Nota: Na linha de código descrita acima, path \ filename precisa ser substituído pelo caminho completo (incluindo o nome completo do arquivo) para o local do modelo de planilha que você acabou de criar.

Artigos Interessantes