locked
Fazer macro que busca os dados de outra planilha RRS feed

  • Pergunta

  • Boa Noite pessoal!

    Gente todo dia, eu gero dados de vendas no SAP/R3 e exporto para excel, depois colo os dados no banco de dados de uma planilha (VENDA DIÁRIA SUL) para as fórmulas fazerem os cálculos e a planilha ser atualizada. 

    Eu gostaria de uma macro que copiasse os dados dessas planilhas que foram exportadas do R3 e colasse no banco de dados da minha planilha de vendas (ctrl c c + ctrl v)

    São 6 abas na planilha padrão que atualizo VENDA DIA, VENDA MÊS, VENDA AS, VENDA AS DIA, BONIF, COBERTURA.

    Eu pensei em salvar na mesma pasta no computador os arquivos exportados com o nome exato de cada aba, por exemplo: gero os dados no R3 e salvo a planilha exportada com o nome VENDA DIA, pronto, ao acionar um botão na minha planilha padrão (VENDA DIÁRIA SUL) ela copia os valores da planilha que foi exportada do R3 e que esta com este nome na mesma pasta e cola na planilha padrão. E assim sucessivamente com as outras VENDA MÊS, VENDA AS, VENDA AS DIA... etc...

    Os arquivos geralmente tem o mesmo tamanho de colunas 14 no total A1:N3000. E são padronizados então é só ctrl c no arquivo exportado + ctrl v na minha planilha... que ja realiza os cálculos de vendas.

    Agradeço quem me ajudar vai me polpar muito trabalho.

    quinta-feira, 6 de maio de 2010 00:18

Todas as Respostas

  • Ola.

    Voce pode me mandar um exemplo de planilha para analisar.

    Trabalho com relatórios de vendas e gracas a Deus tenho tido bons resultados.

     

    Fico no aguardo

    sábado, 4 de setembro de 2010 02:25
  • No meu entendimento, você chama de aba as planilhas de uma Pasta de Trabalho e chama de Planilha uma Pasta de Trabalho.

    O código em VBA abaixo, que deverá ser copiado na Pasta de Trabalho padrão, funciona da seguinte forma: ele busca pastas de trabalho abertas que possuem como nome uma das planilhas de sua pasta de trabalho padrão, copia os dados e as fecha automaticamente.

    Exemplo: com a pasta de trabalho padrão aberta e, por exemplo, a pasta VENDA DIA.xls também aberta, automaticamente buscará informações desta e fechará a pasta de trabalho.

    O range copiado aqui adotado da pasta de trabalho origem será sempre de A1:N3000. Além disso, estou considerando que os dados da pasta de trabalho origem estão sempre na primeira pasta de trabalho da mesma.

    Sub Consolidar()
      
      Dim wb As Workbook
      Dim ws As Worksheet
      
      For Each wb In Workbooks
        If ThisWorkbook.Name <> wb.Name Then
          On Error Resume Next
          Set ws = ThisWorkbook.Sheets(NomeSemExtensão(wb.Name))
          If Err.Number = 0 Then
            wb.Sheets(1).Range("A1:N3000").Copy Destination:=ws.Range("A" & ws.UsedRange.Rows.Count + 1)
          End If
          On Error GoTo 0
        End If
      Next wb
    End Sub
    
    Function NomeSemExtensão(str As String) As String
      Dim n As Long
      
      For n = Len(str) To 1 Step -1
        If Mid(str, n, 1) = "." Then
          NomeSemExtensão = Mid(str, 1, n - 1)
          Exit For
        End If
      Next n
    End Function


    http://www.ambienteoffice.com.br
    sábado, 4 de setembro de 2010 12:29