Notifications
Clear all

Copiar um intervalo de células para outro arquivo

17 Posts
2 Usuários
0 Reactions
4,053 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caros amigos tenho uma planilha padrão contendo algumas informações. Cada linha da planilha corresponde a um período (mes/ano -> no meu caso 01/1989 à 12/2010). Preciso criar uma outra planilha, a partir da digitação de um determinado intervalo de período e copiar estas informações da planilha padrão. Como fazer ?

 
Postado : 03/07/2011 11:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Marcio, utilizando o filttro avançado você pode realizar o que quer sem precisar do VBA, mas se pretende por VBA, de uma olhada neste exemplo disponibilizado no site da Contexture se ajuda, onde fiz algumas adaptações.

Filtrar dados para outra ABA
Anexo atualizado em 18/11/2014

abraços

 
Postado : 03/07/2011 1:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caro Mauro, esta tua dica foi muito boa, mas se eu quiser gerar outro arquivo.xls ao invés de atualizar uma planilha dentro do mesmo arquivo. Como ficaria ? Obrigado.

 
Postado : 04/07/2011 7:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Marcio, para realizar o Filtro para uma nova Pasta (Arquivo.xls), usando este mesmo exemplo que anexei, acrescente a rotina abaixo e associe a um botão.

Sub FiltroNewWkB()
Dim wsOrigem As Worksheet

Set wsOrigem = Sheets("Orders")
           
'Cria uma nova Pasta
Set Wkb = Workbooks.Add
    'Nomeia a Aba
    With ActiveSheet
        .Name = "filtrados"
        .Range("A1").Select
    End With

        'Aplica o Filtro Avançado e Copia para a ABA "filtrados"
        'do novo WB
        wsOrigem.Range("Database") _
            .AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=wsOrigem.Range("G1:H2"), _
            CopyToRange:=ActiveSheet.Range("A1"), Unique:=False
            
            Range("A1").Activate
                
            'Ajusta a largura das colunas
            ActiveSheet.Columns("A:D").AutoFit
End Sub

É criado uma nova pasta e o filtro é transportado para o mesmo.

abraços

 
Postado : 04/07/2011 5:03 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caro Mauro conforme voce orientou coloquei esta rotina no exemplo anterior associando a um botão. Quando executei, deu erro : variável Wkb não definida. Defini esta variável assim : Dim Wkb = Workbooks, e agora deu outro erro : tipos incompátiveis. Desculpe mas estou iniciando no VBA, talvez não seja esta definição. Abraços.

 
Postado : 04/07/2011 7:25 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Marcio, segue o exemplo.

Filtrar para Nova ABA ou Nova Pasta
Anexo Atualizado em 18/11/2014

abraços

 
Postado : 05/07/2011 5:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caro Mauro conforme voce orientou coloquei esta rotina no exemplo anterior associando a um botão. Quando executei, deu erro : variável Wkb não definida. Defini esta variável assim : Dim Wkb = Workbooks, e agora deu outro erro : tipos incompátiveis. Desculpe mas estou iniciando no VBA, talvez não seja esta definição. Abraços.

Marcio, não deu para eu editar minha msg anterior, então só para explicar o porque do erro que mencionou, é que como fiz em um novo módulo, não utilizei a instrução "Option Explicit", o que força a Declaração de Variáveis, então neste novo exemplo que anexei, não tem Option Explicit.
No modelo que colou a rotina, a Declaração da Variável correta é :
Dim Wkb As Workbook
Então se adicionar a mesma não terá erro.

abraços

 
Postado : 05/07/2011 5:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito Obrigado Mauro, funcionou corretamente, e atendente a minha necessidade. Abraços

 
Postado : 05/07/2011 6:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pôxa, não estou conseguindo abrir as planilhas dos exemplos...

 
Postado : 12/09/2011 9:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pôxa, não estou conseguindo abrir as planilhas dos exemplos...

Danilo, os arquivos estavam corrompidos, já atualizei, é só baixar.

abraços

 
Postado : 13/09/2011 7:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pôxa, não estou conseguindo abrir as planilhas dos exemplos...

Danilo, os arquivos estavam corrompidos, já atualizei, é só baixar.

abraços

Hêee.!!!

Agora sim.! Abriu perfeitamente.

Para mim, os exemplos estão perfeitos, porém muitos complexos, eu preciso de algo parecido porém bem mais simples.

Exemplo:
Tenho uma tabela de contatos, c/ colunas de: NOME, ENDEREÇO, CIDADE, e nas linhas os respectivos dados.
Preciso apenas que, filtre as CIDADES e crie um novo ARQUIVO.XLS para cada cidade filtrada. Só isso.!

Obs.: Poderia até existir uma célula de referência onde informaria a cidade a ser filtrada, como critério p/ o filtro. E cada Novo ARQUIVO.XLS já fosse gerado com o nome da Cidade filtrada. Maz para mim estes dois seriam indiferente.

Eu cinceramente não estou conseguindo adaptar os arquivos de exemplos para o que eu preciso.

Abraços.!

 
Postado : 16/09/2011 7:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro
Haveria possibilidade de se enviar os dados filtrados pra uma pasta já existente?

 
Postado : 03/11/2011 8:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Permita-me...

Assim dá.

Sub FiltroNewWkB()
Dim wsOrigem As Worksheet

Set wsOrigem = Sheets("Orders")
           
'Abre a pasta
Set Wkb = Workbooks.Open("C:Documents and SettingsWindows XPDesktopPasta2.xls")

    'Nomeia a Aba
    With ActiveSheet
        .Name = "filtrados"
        .Range("A1").Select
    End With

        'Aplica o Filtro Avançado e Copia para a ABA "filtrados"
        'do novo WB
        wsOrigem.Range("Database") _
            .AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=wsOrigem.Range("G1:H2"), _
            CopyToRange:=ActiveSheet.Range("A1"), Unique:=False
            
            Range("A1").Activate
                
            'Ajusta a largura das colunas
            ActiveSheet.Columns("A:D").AutoFit
    ActiveWorkbook.Close SaveChanges:=True 'fecha e salva
End Sub
 
Postado : 03/11/2011 3:30 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Funcionou legal
vlw joséA

 
Postado : 03/11/2011 4:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vlw,

Mas, os méritos são do Mauro. ;)

 
Postado : 04/11/2011 6:36 am
Página 1 / 2