none
Criar nova planilha copiando parte de uma já existente RRS feed

  • 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!

    segunda-feira, 3 de fevereiro de 2014 18:12

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

    terça-feira, 4 de fevereiro de 2014 09:26
    Moderador

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
    terça-feira, 4 de fevereiro de 2014 00:14
  • 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

    terça-feira, 4 de fevereiro de 2014 00:35
    Moderador
  • 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!!!

    terça-feira, 4 de fevereiro de 2014 00:47
  • 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

    terça-feira, 4 de fevereiro de 2014 09:26
    Moderador
  • 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 comando
    Sheets("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?
    terça-feira, 4 de fevereiro de 2014 10:47
  • Deu certo aqui Felipe! Obrigado pela ajuda de sempre!!
    terça-feira, 4 de fevereiro de 2014 18:45