Usuário com melhor resposta
Criar nova planilha copiando parte de uma já existente

Pergunta
-
Boa tarde, tenho uma planilha ("X") que é muito extensa, e faço uma cópia exta dela para uma nova a partir do comando
Sheets("X").Copy Before:=Sheets(1)
Mas na verdade não é necessário copiar toda a planilha X para uma nova. Este processo está demorando muito tempo.
Gostaria de criar uma nova somente com parte desta planilha "X". Esta parte seria da célula "A1", até a célula "DL77", assim, o processo de cirar nova planilha ficará muito mais rápido. Tentei colocar Range("A1:DL77").Copy Before:= Sheets(1) mas não funcionou. Não posso perder a formatação das células que serão copiadas.Obrigado!
Respostas
-
Tente:
Sub fMain() Dim wksOrigem As Excel.Worksheet Dim wksDest As Excel.Worksheet With ThisWorkbook Set wksDest = .Worksheets.Add Set wksOrigem = .Worksheets("Plan1") '<- altere aqui End With wksOrigem.Range("A1:DL77").Copy wksDest.Range("A1") wksOrigem.Range("A1:DL77").Copy wksDest.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:14
Todas as Respostas
-
Não consigo encontrar um comando que cole as células selecionadas com formatação em uma nova planilha.
Só sei fazer em uma planilha já existente.
Se alguém tiver uma noção me dá um help, por favor!
- Editado Mmbr terça-feira, 4 de fevereiro de 2014 00:15
-
Sub fMain() Dim wksOrigem As Excel.Worksheet Dim wksDest As Excel.Worksheet With ThisWorkbook Set wksDest = .Worksheets.Add Set wksOrigem = .Worksheets("Plan1") '<- altere aqui End With wksOrigem.Range("A1:DL77").Copy wksDest.Range("A1").PasteSpecial Paste:=xlPasteValues wksDest.Range("A1").PasteSpecial Paste:=xlPasteFormats wksDest.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Eu achei que esta medida poderia tornar o algoritmo mais rápido mas não adiantou nada.. Está demorando muito tempo para realizar está cópia.. E a plan "X" possui combo box que não foram coladas com este código acima..
Não adiantou muito, acho que vou ficar com o modelo antigo mesmo.. Mas obrigado pela força Felipe!!!
-
Tente:
Sub fMain() Dim wksOrigem As Excel.Worksheet Dim wksDest As Excel.Worksheet With ThisWorkbook Set wksDest = .Worksheets.Add Set wksOrigem = .Worksheets("Plan1") '<- altere aqui End With wksOrigem.Range("A1:DL77").Copy wksDest.Range("A1") wksOrigem.Range("A1:DL77").Copy wksDest.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:14
-
As combo box não estão exatamente no lugar que estavam e as linhas 12 à 23 estavam ocultadas e agora estão aparecendo, mas o tempo caiu um pouco agora!
Eu utilizei o comandoSheets("outra planilha").Copy Before:=Sheets(1)
para ver se copiando uma planilha com menos dados não baixaria o tempo do algoritmo mas não mudou nada.. Acho que o arquivo está muito pesado e isto prejudica a ação do "copiar" "colar" para a nova planilha. Eu ia passar alguns dados da planilha "X"para outra pra ver se isto poderia melhorar um pouco o tempo. O que você acha disto? -