Notifications
Clear all

Copiar dados de uma planilha para outra

4 Posts
2 Usuários
0 Reactions
866 Visualizações
(@brunsftw)
Posts: 93
Estimable Member
Topic starter
 

Boa tarde! Eu tenho o seguinte código abaixo em que estou tentando fazer algumas adaptações:

Sub fnc()
  Dim wkbOrigem As Excel.Workbook
  Dim wksOrigem As Excel.Worksheet
  Dim wkbDest As Excel.Workbook
  Dim wksDest As Excel.Worksheet
  Dim lngLast As Long
  
  'Abre pastas de trabalho e planilhas.
  'Altere os caminhos e nomes de planilhas para adequar a seu caso.
  Set wkbOrigem = Workbooks.Open("C:UsersDesktop")
  Set wksOrigem = wkbOrigem.Worksheets("Plan2")
  Set wkbDest = Workbooks.Open("C:UsersDesktop")
  Set wksDest = wkbDest.Worksheets("Plan1")
  
  'Descobre a última linha da planilha de destino
  With wksDest
    lngLast = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
  End With
  
  wksOrigem.Range("A6:B250").Copy wksDest.Cells(lngLast, "A")
  'Se quiser colar valores:
  'wksOrigem.Range("A6:B250").Copy
  'wksDest.Cells(lngLast, "A").PasteSpecial Paste:=xlPasteValues
  
  wkbOrigem.Close SaveChanges:=False
  wkbDest.Close SaveChanges:=True
End Sub

Pelo que vocês podem ver, eu tô copiando e colando dados de uma planilha para outra. O único problema é que esse código só funciona em uma terceira planilha avulsa que só serve pra executar essa macro. Eu tenho a planilha A com os dados de origem, a planilha B com os dados de destino e a planilha C com o único propósito de fazer de rodar esse código VBA.
Eu gostaria de adaptar esse código para que ele rode na planilha B, busque os dados na planilha A, para que eu possa eliminar a planilha C.
Alguém pode me ajudar?

 
Postado : 13/08/2015 12:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

De uma forma genérica, vc não precisa de um arquivo a mais para a copia, eu tenho dezenas de postagens que fazem o que vc deseja, use a pesquisa do fótum!

Att

 
Postado : 13/08/2015 1:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi, você quer :
Arquivo Destino - é onde será executado a macro e receberá os dados do arquivo Origem.

Se for isto, no arquivo Destino utilize a rotina abaixo, lembrando que tem de ajustar o nome do arquivo de Origem "PlanOrigem.xlsx", e como o arquivo destino já está aberto, definimos utilizando "ThisWorkbook" :

Sub fncMauro()
    Dim wkbOrigem As Excel.Workbook
    Dim wksOrigem As Excel.Worksheet
    Dim wkbDest As Excel.Workbook
    Dim wksDest As Excel.Worksheet
    Dim lngLast As Long
        
    'Definimos o Arquivo que esta aberto e contem a rotina
    Set wkbDest = ThisWorkbook
    Set wksDest = Worksheets("Plan1")
      
    'Abre pastas de trabalho e planilhas.
    'Altere os caminhos e nomes de planilhas para adequar a seu caso.
    Set wkbOrigem = Workbooks.Open("C:UsersDesktopPlanOrigem.xlsx")
    Set wksOrigem = wkbOrigem.Worksheets("Plan2")
     
    'Descobre a última linha da planilha de destino
    With wksDest
        lngLast = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
    End With
     
    wksOrigem.Range("A6:B250").Copy wksDest.Cells(lngLast, "A")
      'Se quiser colar valores:
      'wksOrigem.Range("A6:B250").Copy
      'wksDest.Cells(lngLast, "A").PasteSpecial Paste:=xlPasteValues
     
    wkbOrigem.Close SaveChanges:=False
    wkbDest.Close SaveChanges:=True
    
End Sub

Faça os testes e veja se é isto.

 
Postado : 13/08/2015 1:36 pm
(@brunsftw)
Posts: 93
Estimable Member
Topic starter
 

Muito obrigado pela ajuda, Mauro!
Funcionou perfeitamente.
Obrigado!

 
Postado : 14/08/2015 4:51 am