segunda-feira, 18 de julho de 2011

VBA EXCEL - IMPORTAR DADOS DE UM LIVRO PARA OUTRO (Import Data from a Workbook to Another)

Uma forma de importar ou copiar dados de um livro ("Livro1") fechado para o livro activo ("Livro2"), atendendo a um conjunto de condições.
Este exemplo mostra como podemos importar ou copiar um conjunto de dados de um livro para outro, sem ser necessário o recurso a colar e copiar.
Para tal, basta colocar este código num módulo VBA e correr a macro. Podemos igualmente associar a macro a uma botão, possibilitando assim a execução do processo através de um único click.
A simple way to import or copy data from a closed book ("Livro1") for the active workbook ("Livro2"), given a set of conditions. 
This example shows how we can import or copy data from one workbook to another without requiring the use of copy and paste.
Simply put this code in a VBA module and run the macro. We can also associate the macro to a button, allowing the execution of the process through a single click.
 

Sub ImportarDados ()
    Workbooks.Open Filename:="C:\...\Livro1.xls"
     Dim Origem As Worksheet
     Dim Destino As Worksheet
     Set Origem = Workbooks("Livro1.xls").Worksheets("Folha1")
     Set Destino = Workbooks("Livro2.xls").Worksheets("Folha1")
       k_linhas = 0
       For rw = 11 To k_linhas
          If Origem.Cells(rw, 1).Value > 0 And Origem.Cells(rw, 5) > 0 And Destino.Cells(rw, 17).Value =_
          _Origem.Cells(rw, 1).Value Then

          Destino.Cells(rw, 17).Value = Origem.Cells(rw, 1).Value
          k_linhas = k_linhas + 1

          End If
       Next rw
   Workbooks("Livro1.xls").Close SaveChanges:=False
    MsgBox "Introdução de Dados Concluída"
End Sub

8 comentários:

  1. uma pergunta, como seria uma importação apenas dos dados faltantes,
    sei que seria um vba com o countif para contagens > 1.

    poderia ajudar com esta questão?

    ResponderEliminar
  2. Boa noite
    Desde já, obrigado por colocar uma questão. É com o intuito de ajudar e partilhar conhecimentos que este blog existe.
    Se bem percebi, o que pretende é importar apenas um conjunto de dados em falta.
    Ora, a macro acima exemplificada corre uma instrução de copiar os valores de um intervalo específico de células na coluna A do Livro1 e colar os mesmos na coluna E do Livro2. Ou seja, sempre que a macro for activada serão importados todos os valores do intervalo, sobrepondo, no livro de destino, os existentes e preenchendo as células em falta.
    Se pretende obter outro resultado, especifique por favor o que pretende exactamente.
    Ao seu dispor

    ResponderEliminar
  3. Isto funciona????
    Não consigo, colocar direito...
    Abre o novo livro e não importa nada...

    ResponderEliminar
    Respostas
    1. Boa Noite
      Pode especificar melhor a sua dúvida?

      Eliminar
  4. Boas,

    Tenho gravados no caminho descrito por mim o Livro 1 e 2.

    Gravei a macro como descrita em cima.

    Executo a mesma e não acontece nada...

    Não devia copiar ou importar a folha 1 do livro 1 para o 2?

    ResponderEliminar
  5. Ola pessoal, puxa comigo não funcionou ... somente troquei o criterio para copia...quero que ele veja se tem um nome em uma das colunas
    If Origem.Cells(rw, 1).Value = "Maria" Then

    Mas e se quisesse que ele copiasse a linha inteira como faria?

    ResponderEliminar
  6. Alguém sabe como eu faço para importar uma planilha que está em uma pasta na redes do meu computador para uma outra planilha ?

    ResponderEliminar