Notifications
Clear all

Copia dados de planilhas diferentes

2 Posts
1 Usuários
0 Reactions
952 Visualizações
(@odilojr)
Posts: 21
Eminent Member
Topic starter
 

Bom dia a todos!

Fui ajudado com essa macro abaixo para copiar as linhas que apenas contenha dados de uma aba para outra. E foi de muita ajuda.
Agora preciso que ao invés de copiar de uma aba na mesma planilha, ela copie de uma aba de outra planilha.

Quem puder me ajudar fico extremamente agradecido

Segue a macro:

Sub CriarResumo()
Const c_sResumo As String = "Resumo"
Const c_sBD As String = "BD"
Const c_sCritério As String = "D"
Const c_lDados As Long = 2

Dim lResumo As Long
Dim lBD As Long
Dim wsResumo As Worksheet
Dim wsBD As Worksheet

With ThisWorkbook
'Atribui variável à Planilha:
Set wsBD = .Sheets(c_sBD)
Set wsResumo = .Sheets(c_sResumo)

End With

lResumo = c_lDados
For lBD = c_lDados To RowLast(wsBD.Columns(c_sCritério))
If wsBD.Cells(lBD, c_sCritério) <> "" Then
wsBD.Rows(lBD).Copy Destination:=wsResumo.Cells(lResumo, "A")
lResumo = lResumo + 1
End If
Next lBD
End Sub

Function RowLast(rng As Range) As Long
'Retorna o valor da última linha povoada do intervalo rng
With rng
On Error Resume Next
RowLast = .Find(What:="*" _
, After:=.Cells(1) _
, SearchDirection:=xlPrevious _
, SearchOrder:=xlByColumns _
, LookIn:=xlFormulas).Row
If RowLast = 0 Then RowLast = rng.Cells(1).Row
End With
End Function

 
Postado : 02/06/2015 8:27 am
(@odilojr)
Posts: 21
Eminent Member
Topic starter
 

Consegui fazer copiar de outra planilha, segue a macro
Porém preciso colocar que a copia seja somente até uma coluna específica, por exemplo coluna "D"
Alguem poderia me ajudar a colocar a especificação até qual coluna copiar?

Sub CriarResumo()
Const c_sResumo As String = "Resumo"
Const c_sBD As String = "BD"
Const c_sCritério As String = "D"
Const c_lDados As Long = 1

Dim lResumo As Long
Dim lBD As Long
Dim wsResumo As Worksheet
Dim wsBD As Worksheet

With wsBD
'Atribui variável à Planilha:
Set wsBD = Workbooks("BDTeste.xlsx").Worksheets("BD")

End With

With wsResumo
Set wsResumo = Workbooks("Pressao_d4.xlsm").Worksheets("Resumo")

End With

lResumo = c_lDados
For lBD = c_lDados To RowLast(wsBD.Columns(c_sCritério))
If wsBD.Cells(lBD, c_sCritério) <> "" Then
wsBD.Rows(lBD).Copy Destination:=wsResumo.Cells(lResumo, "A")
lResumo = lResumo + 1
End If
Next lBD
End Sub

Function RowLast(rng As Range) As Long
'Retorna o valor da última linha povoada do intervalo rng
With rng
On Error Resume Next
RowLast = .Find(What:="*" _
, After:=.Cells(1) _
, SearchDirection:=xlPrevious _
, SearchOrder:=xlByColumns _
, LookIn:=xlFormulas).Row
If RowLast = 0 Then RowLast = rng.Cells(1).Row
End With
End Function

 
Postado : 03/06/2015 8:04 am