Notifications
Clear all

Macro para copiar valores de outras pastas

7 Posts
3 Usuários
0 Reactions
1,486 Visualizações
(@vxavier)
Posts: 0
New Member
Topic starter
 

Bom dia pessoal, sou novo no fórum.
Estou precisando criar uma macro para copiar valores de diversas planilhas, mas não tenho a mínima noção de VBA.
Andei pesquisando e consegui os elementos que eu preciso, mas não estou conseguindo juntar o quebra-cabeça.
Podem me ajudar ?


Sub Abrir_Copiar_Colar()

Dim FSO As Object
Dim Pasta As String
Dim Planilha As Object
Dim OpenBook As String

Set FSO = CreateObject("Scripting.FileSystemObject")
Pasta = "C:xxxxx" 'Pasta com as planilhas que serão abertas e copiadas

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

For Each Planilha In FSO.GetFolder(Pasta).Files

If InStr(1, Planilha, ".xls") = 0 Then GoTo PRÓXIMO

Workbooks.Open (Planilha)
OpenBook = ActiveWorkbook.Name

        
        

Windows(ThisWorkbook.Name).Activate

    
        
Application.CutCopyMode = False
Workbooks(OpenBook).Close False
PRÓXIMO:
Next

Application.ScreenUpdating = True

MsgBox "Dados Copiados com Sucesso!", vbInformation, "Aviso"

Application.Calculation = xlCalculationAutomatic

End Sub


Com a macro acima, eu consigo abrir todos os arquivos xxx, funciona perfeitamente.
mas eu preciso colar os valores em ordem em outra planilha. Com o código abaixo
eu consigo fazer esta operação, mas não consigo abrir todos os arquivos da pasta xxx


Sub aberturadearquivo()

    Dim wsOrigem As Worksheet
    Dim wsDestino As Worksheet

    Workbooks.Open Filename:="C:xxxxarquivo.xlsx"

    Set wsOrigem = Workbooks("arquivo.xlsx").Worksheets(1)
    Set wsDestino = Workbooks("arquivos.xlsx").Worksheets("Plan1")
    
    With wsOrigem
        wsOrigem.Range("A1").Copy
        wsDestino.Range("B3").PasteSpecial xlValues
        wsOrigem.Range("B1").Copy
        wsDestino.Range("A3").PasteSpecial xlValues
        wsOrigem.Range("B1").Copy
        wsDestino.Range("A3").PasteSpecial xlValues
        
        wsOrigem.Range("B4:B62").Copy
        wsDestino.Range("C3").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
        
        Application.CutCopyMode = False
    End With

    Workbooks("arquivos.xlsx").Close SaveChanges:=True

    MsgBox "Importação de Dados Concluída"
    
End Sub

Podem me ajudar a fazer esta junção ?

 
Postado : 11/07/2014 8:15 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

vxavier,

Bom Dia!

Melhor compactar seus arquivos (ou exemplos) com ZIP e anexá-los aqui para que possamos ajudar.

 
Postado : 11/07/2014 8:42 am
(@vxavier)
Posts: 0
New Member
Topic starter
 

Boa tarde Wagner,
Desculpe a demora em enviar o material solicitado.
O arquivo 330010 é o arquivo que contém a informação que eu quero extrair, o arquivo óbito é o arquivo que armazenará a informação.
o arquivo óbito, já contem um exemplo de como eu quero que a informação fique. Não sei se as macros foram junto com os arquivos,
mas em todo caso elas já estão no tópico, se necessário enviarei de novo.

 
Postado : 11/07/2014 11:25 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

vxavier,

Boa Tarde!

Veja se é assim.

 
Postado : 11/07/2014 12:23 pm
(@vxavier)
Posts: 0
New Member
Topic starter
 

Bom dia Wagner, tudo bem ?
Não tive como te responder na sexta pq sai mais cedo para ir ao médico.
A ideia esta certíssima, mas preciso que não fique preso a um único arquivo, como um 330010.xls
a intenção é que ele copie e cole os valores de todos os arquivos que estão dentro de uma determinada pasta.

abs

 
Postado : 14/07/2014 8:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Enquanto isso, leia:
http://www.get-digital-help.com/2012/10 ... workbooks/

att

 
Postado : 14/07/2014 8:50 am
(@vxavier)
Posts: 0
New Member
Topic starter
 

Boa tarde,
Wagner quando eu removi as linhas Windows("330010.xlsx").Activate e ActiveWindow.Close funcionou exatamente como eu queria.
Muito obrigado pela ajuda.

AlexandreVba,
Obrigado pelo material, realmente ele foi bem instrutivo.

Abs.

 
Postado : 14/07/2014 11:06 am