No Microsoft Excel, você executa uma macro que copia planilhas e, em seguida, coloca as planilhas na mesma pasta de trabalho na qual elas foram originadas. Ao fazer esse procedimento, uma mensagem de erro semelhante às seguintes é exibida:
Erro em tempo de execução '1004': "O método de cópia da classe de planilhas falhou"
Erro em tempo de execução '1004': Erro definido por objeto ou definido por aplicativo
A Microsoft fornece exemplos de programação apenas por questões ilustrativas, sem garantias expressas ou implícitas. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um determinado propósito. Este artigo pressupõe que você conhece a linguagem de programação demonstrada e também as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de um determinado procedimento. Mas não modificarão estes exemplos para fornecer funcionalidades adicionais ou construir procedimentos específicos para atender às suas necessidades específicas.
Esse problema pode ocorrer quando você dá um nome definido para a pasta de trabalho e a copia várias vezes sem salvá-la e fechá-la, como no código de exemplo 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
Para resolver esse problema, salve e feche a pasta de trabalho periodicamente enquanto o processo de cópia estiver sendo realizado, como no código de exemplo 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)
'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
Observação O número de vezes que você pode copiar uma planilha, antes de salvar a pasta de trabalho, varia de acordo com o tamanho da planilha.
Para resolver esse problema, insira uma nova planilha a partir de um modelo em vez de copiar uma planilha existente. Para fazer isso, siga essas etapas de acordo com a versão do Excel que está sendo utilizada.
Microsoft Office Excel 2007
Crie uma nova pasta de trabalho, deixe somente uma planilha e exclua todas as outras.
Formate a pasta de trabalho e, em seguida, adicione qualquer texto, dados e gráficos que você precisa ter no modelo por padrão.
Clique no Botão do Microsoft Office e em Salvar como.
Na caixa Nome do arquivo, digite o nome desejado para o modelo do Excel.
Na lista Salvar como tipo, clique em Modelo do Excel (*.xltx) e clique em Salvar.
Para inserir o modelo programaticamente, use o seguinte código:
Sheets.Add Type:=caminho\nome_do_arquivo
Nesse código, caminho\nome_do_arquivo é uma seqüência que contém o caminho e o nome de arquivo completo do modelo de planilha.
Microsoft Office Excel 2003 e versões anteriores do Excel
Crie uma nova pasta de trabalho, deixe somente uma planilha e exclua todas as outras.
Formate a pasta de trabalho e, em seguida, adicione qualquer texto, dados e gráficos que você precisa ter no modelo por padrão.
Clique em Arquivo e clique em Salvar como.
Na caixa Nome do arquivo, digite o nome desejado para o modelo do Excel.
Na lista Salvar como tipo, clique em Modelo (*.xlt) e clique em Salvar.
Para inserir o modelo programaticamente, use o seguinte código:
Sheets.Add Type:=caminho\nome_do_arquivo
Nesse código, caminho\nome_do_arquivo é uma seqüência que contém o caminho e o nome de arquivo completo do modelo de planilha.
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.