none
Copiar dados de um workbook para outro utilizando um condicional de datas RRS feed

  • Pergunta

  • Fala Galera,

    Estou tentando resolver um código e, por ser leigo no assunto, tenho penado esses dias.
    A ideia é a seguinte:

    Tenho uma planilha (workbook) no excel que é abastecida diariamente com centenas de lotes de produtos. Todos esses lotes tem um prazo de aprovação.
    Estou tentando criar uma planilha (outro workbook) para funcionar como central de avaliação de prazos por meio de macros.
    A planilha possui dois botões: no primeiro, seleciono o workbook o qual será avaliado de acordo com os prazos (pode ser matéria-prima, embalagem, etc). Esse botão retorna o endereço da planilha de avaliação, a qual é selecionada com um opendialog, na célula F5 da "central de avaliação".
    O segundo botão, a intenção é que ele faça uma varredura na coluna "datas" da planilha apresentada em "F5", copie as datas que estão próximas ao vencimento (menos de 4 dias) e cole na "central de avaliação" na unica aba existente.

    Deu pra entender?

    Até agora, o código que eu cheguei está apresentado abaixo. O primeiro botão funciona perfeitamente, já o segundo, seleciona as datas mas apenas cria um filtro na planilha de origem dos dados e não cola na planilha central.

    Sub copiarClick()
    
    'teste novo
    Dim rawDataSht As Worksheet, filtDataSht As Worksheet
    Dim pasta As String
    Dim wbOrigem As Workbook
    Dim wbDestino As Workbook
    
    'Identificação caminho pasta e conferencia do preenchimento
    If Range("F5").Value <> "" Then
    pasta = Range("F5").Value
    Else
    MsgBox "Selecionar planilha para avaliação."
    Exit Sub
    End If
    
       Set wbDestino = ThisWorkbook
       Workbooks.Open (pasta)
       Set wbOrigem = Workbooks.Open(pasta)
       
         With wbOrigem
            AutoFilterMode = False
            With Range("M2", Range("M" & Rows.Count).End(xlUp))
                .AutoFilter Field:=1, Criteria1:=Array("1", "2", "3", "4")
                On Error Resume Next
                .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy
            End With
        wbDestino.Sheets("Liberação").Cells(2, 2).PasteSpecial xlPasteValues
            .AutoFilterMode = False
        Application.CutCopyMode = False
        End With
        wbOrigem.Close (True)
    End Sub

    Alguém tem alguma dica?
    Desde já agradeço.
    Abraço

    quinta-feira, 30 de novembro de 2017 10:00

Respostas

  • AndersonFDiniz2, não funcionou.

    Porém, consegui resolver de outra maneira.
    O erro estava no modo como estabeleci a contagem das linhas e a transferência de dados para o outro workbook.

    Valeu pela atenção.

    • Marcado como Resposta ras85 segunda-feira, 18 de dezembro de 2017 13:11
    segunda-feira, 18 de dezembro de 2017 13:11

Todas as Respostas

  • Sub copiarClick()
    
    'teste novo
    Dim rawDataSht As Worksheet, filtDataSht As Worksheet
    Dim pasta As String
    Dim wbOrigem As Workbook
    Dim wbDestino As Workbook
    
    'Identificação caminho pasta e conferencia do preenchimento
    If Range("F5").Value <> "" Then
    pasta = Range("F5").Value
    Else
    MsgBox "Selecionar planilha para avaliação."
    Exit Sub
    End If
    
       Set wbDestino = ThisWorkbook
       Workbooks.Open (pasta)
       Set wbOrigem = Workbooks.Open(pasta)
       
         With wbOrigem
            AutoFilterMode = False
            With Range("M2", Range("M" & Rows.Count).End(xlUp))
                .AutoFilter Field:=1, Criteria1:=Array("1", "2", "3", "4")
                On Error Resume Next
                .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy
            End With
    wbdestino.select
        wbDestino.Sheets("Liberação").Cells(2, 2).PasteSpecial xlPasteValues
            .AutoFilterMode = False
        Application.CutCopyMode = False
        End With
        wbOrigem.Close (True)
    End Sub


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quinta-feira, 30 de novembro de 2017 10:36
    quinta-feira, 30 de novembro de 2017 10:36
  • Fala Brother,

    Não funcionou, continua retornando as mesmas coisas.
    segunda-feira, 11 de dezembro de 2017 11:13
  • Sub copiarClick() 'teste novo Dim rawDataSht As Worksheet, filtDataSht As Worksheet Dim pasta As String Dim wbOrigem As Workbook Dim wbDestino As Workbook 'Identificação caminho pasta e conferencia do preenchimento If Range("F5").Value <> "" Then pasta = Range("F5").Value Else MsgBox "Selecionar planilha para avaliação." Exit Sub End If Set wbDestino = ThisWorkbook Workbooks.Open (pasta) Set wbOrigem = activeWorkbook With wbOrigem .AutoFilterMode = true With Range("M2", Range("M" & Rows.Count).End(xlUp)) .AutoFilter Field:=1, Criteria1:=Array("1", "2", "3", "4") On Error Resume Next .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy End With

    .AutofilterMode=false wbdestino.select wbDestino.Sheets("Liberação").Cells(2, 2).PasteSpecial xlPasteValues Application.CutCopyMode = False End With wbOrigem.Close (True) End Sub



    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 segunda-feira, 11 de dezembro de 2017 14:14
    segunda-feira, 11 de dezembro de 2017 14:14
  • AndersonFDiniz2, não funcionou.

    Porém, consegui resolver de outra maneira.
    O erro estava no modo como estabeleci a contagem das linhas e a transferência de dados para o outro workbook.

    Valeu pela atenção.

    • Marcado como Resposta ras85 segunda-feira, 18 de dezembro de 2017 13:11
    segunda-feira, 18 de dezembro de 2017 13:11