Notifications
Clear all

Copiar linha que não esta em branco

2 Posts
2 Usuários
0 Reactions
518 Visualizações
(@dfesta)
Posts: 0
New Member
Topic starter
 

Pessoal, boa tarde.
Pesquisei um pouco aqui no fórum, e não encontrei um modelo que fizesse exatamente o que preciso, portanto decidi abrir mais um tópico.
Sei que o problema não é tão grande assim, porém não estou conseguindo acertar esse bloco da programação.
Tenho uma planilha central, que irá copiar os dados de 3 planilhas distintas. O meu problema esta no momento em que vou copiar as linhas das tabelas de origem.
Segue o código que esta feito:

Private Sub CommandButton1_Click()
Dim mes As String
Dim L As Integer
Dim wsbook As Workbook
Dim wsheet As Worksheet
Dim wsbookf As Workbook
Dim wsheetf As Worksheet
mes = ComboBox1.Value
L = 19
Set wsbook = Workbooks.Open("path1") 'abre o arquivo de origem
Set wsbookf = Workbooks.Open("path2") 'abre o arquivo de destino
If mes = "Junho" Then
    Set wsheet = wsbook.Worksheets("Junho") 'define a planilha de origem
    Set wsheetf = wsbookf.Worksheets("Junho") 'define a planilha de destino
End If
With wsheet
    While .Cells(L, 4).Value <> Empty
        Rows(L, L).Selection.Copy  'Aqui esta o problema, pois não sei como fazer ele copiar a linha toda, baseado no valor da variável "l" que contém a linha que esta sendo verificada
        With wsheetf
            Range("a65000").End(xlUp).Offset(0, 0).Select
            Selection.Paste
        End With
        L = L + 1
    Wend
End With
End Sub

Alguma sugestão?

Obrigado

Diogo

 
Postado : 09/07/2015 10:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se compreendi devido ao assunto estar copiar linha que não esta em branco, mas olhando a rotina acredito que deve ser isto.

Você quer copiar de uma para outra, então não precisamos copiar e depois colar, podemos enviar diretamente usando o "Copy Destination" , altere conforme abaixo :

Private Sub CommandButton1_Click()
    Dim mes As String
    Dim L As Integer
    Dim wsbook As Workbook
    Dim wsheet As Worksheet
    Dim wsbookf As Workbook
    Dim wsheetf As Worksheet
    
    mes = ComboBox1.Value
    L = 19
    
    Set wsbook = Workbooks.Open("path1") 'abre o arquivo de origem
    Set wsbookf = Workbooks.Open("path2") 'abre o arquivo de destino
    
    If mes = "Junho" Then
        Set wsheet = wsbook.Worksheets("Junho") 'define a planilha de origem
        Set wsheetf = wsbookf.Worksheets("Junho") 'define a planilha de destino
    End If
    
        With wsheet
            While .Cells(L, 4).Value <> Empty
                .Rows(L).Copy Destination:=wsheetf.Range("a65000").End(xlUp).Offset(1, 0)
                L = L + 1
            Wend
        End With
    
    End Sub

Faça os testes e veja se é isto, não testei com dois arquivos abertos, mas qualquer coisa retorne.

[]s

 
Postado : 09/07/2015 1:00 pm