Notifications
Clear all

Macro para copiar dados para outra pasta de trabalho

12 Posts
5 Usuários
0 Reactions
2,514 Visualizações
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Amigos, boa noite.

Sou novo nesse fórum e nesse mundo maluco que é o VBA. Estou tendo problemas com a seguinte situação:

Preciso que a macro funcione importando os dados de uma planilha ("Dados.xlsx") e copiando para outra ("Macro.xslm"). A planilha "Dados" possui 3.717 linhas, ou seja, 3.717 registros diferentes. Estou usando o seguinte código para isso:

Sub IMPORTAÇÃO()
        Dim wsOrigem As Worksheet
        Dim wsDestino As Worksheet
        
       Set wsOrigem = Workbooks("Dados.xlsx").Worksheets("Plan1")
       Set wsDestino = Workbooks("Macro.xlsm").Worksheets("CONTRATO")
          
            With wsOrigem
                .Range("A2").Copy Destination:=wsDestino.Range("F5")
                .Range("B2").Copy Destination:=wsDestino.Range("I5")
                .Range("C2").Copy Destination:=wsDestino.Range("L5")
                .Range("D2").Copy Destination:=wsDestino.Range("C7")
                .Range("E2").Copy Destination:=wsDestino.Range("I7")
                .Range("F2").Copy Destination:=wsDestino.Range("C9")
                .Range("G2").Copy Destination:=wsDestino.Range("F9")
                .Range("H2").Copy Destination:=wsDestino.Range("I9")
                .Range("I2").Copy Destination:=wsDestino.Range("L9")
                .Range("J2").Copy Destination:=wsDestino.Range("C11")
                .Range("K2").Copy Destination:=wsDestino.Range("F11")
                .Range("L2").Copy Destination:=wsDestino.Range("I11")
                .Range("M2").Copy Destination:=wsDestino.Range("C13")
                .Range("N2").Copy Destination:=wsDestino.Range("F13")
                .Range("P2").Copy Destination:=wsDestino.Range("I13")
                .Range("Q2").Copy Destination:=wsDestino.Range("C15")
                .Range("R2").Copy Destination:=wsDestino.Range("F15")
            End With
    End Sub
Sub IMPORTAÇÃO2()
    Call IMPORTAÇÃO
    Call GRAVAR
End Sub

O código está assim porque os dados precisam ser copiados para células específicas da planilha "Macro", e após isso, ela executa uma segunda macro para fazer a gravação desses dados em um relatório.

Aí vem o meu problema: Como faço para que a macro execute essa sequência da linha 2 á linha 3.717 e pare quando não houver mais dados a serem copiados? Tentei procurar nas postagens do fórum, mas não sei nem como procurar sobre isso.

Agradeço a ajuda.

 
Postado : 21/11/2016 3:44 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Seria melhor vc disponibilizar seu arquivo com o codigo que vc esta usando.

Fica mais facil usar.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 21/11/2016 4:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Os arquivos estaram fechados ou abertos?

Ambos os arquivos estão no mesmo diretório?

Quais guias de ambos os arquivos?

Os dados da importação e da exportação ficaram no mesmo padrão da disposição dos dados?

Use a pesquisa do fórum
http://www.excel-easy.com/vba/examples/ ... heets.html
http://www.rondebruin.nl/win/addins/rdbmerge.htm

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2016 4:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Big John

Seja bem-vindo ao fórum!

Como você é novato, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:

viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2016 5:17 pm
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Boa noite a todos.

Seria melhor vc disponibilizar seu arquivo com o codigo que vc esta usando.

Fica mais facil usar.

Ok, seguem anexos.

Boa noite!!

Os arquivos estaram fechados ou abertos?

Ambos os arquivos estão no mesmo diretório?

Quais guias de ambos os arquivos?

Os dados da importação e da exportação ficaram no mesmo padrão da disposição dos dados?

Use a pesquisa do fórum
http://www.excel-easy.com/vba/examples/ ... heets.html
http://www.rondebruin.nl/win/addins/rdbmerge.htm

Att

Os arquivos estarão abertos, ambos no mesmo diretório. Na planilha "Dados" as informações são copiadas da guia "Plan1" e coladas nas células específicas da planilha "Macro", guia "CONTRATO".
Essa sua última pergunta eu não entendi, desculpe.

E eu pesquisei no fórum, achei algumas informações sobre Loop, Do, For, While, Untill, mas não consegui resolver o meu problema, nunca usei esses comandos.

Boa noite Big John

Seja bem-vindo ao fórum!

Como você é novato, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:

viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Obrigado pelas informações, já as li.

E obrigado a vocês pela ajuda.

 
Postado : 22/11/2016 3:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Baseado em qual critério os dados serão importados?

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/11/2016 6:45 pm
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Boa noite!!

Baseado em qual critério os dados serão importados?

Att

Olá AlexandreVba!

Os dados são importados seguindo um critério padrão. Nas duas planilhas existem os mesmos campos, mas em células diferentes.

 
Postado : 23/11/2016 6:03 am
(@tnunes34)
Posts: 23
Eminent Member
 

Eu tenho um macro com um critério parecido. O único caminho que eu consegui fazer, é fazendo com que o Macro abrisse a planilha e fechasse ela logo em seguida.
Veja se atende o que você precisa:

Set planprin = Workbooks("Sistema Barbearia2.xlsm")
Dim linha As Integer
novodesc = UserForm1.descComboBox.Text
novovalor = CDbl(UserForm1.TextBox2.Value)
novaboleta = UserForm1.TextBox3.Text
novoprof = UserForm1.profComboBox.Text

Call Workbooks.Open(FileName:="C:UsersnscontabilGoogle DriveFolhaPgto.xlsx", _ 'Aqui é onde eu peço a planilha para abrir e automaticamente tirar a senha
Password:="5883")
Set planteste = Workbooks("FolhaPgto.xlsx").Worksheets("Andre")
linha = 3
ActiveSheet.Activate
ActiveSheet.Unprotect
Do Until planteste.Cells(linha, 1) = ""
linha = linha + 1
Loop

With planteste
.Cells(linha, 1) = Date
.Cells(linha, 2) = novaboleta
.Cells(linha, 3) = novodesc
.Cells(linha, 4) = novovalor
End With
planteste.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveWorkbook.Close savechanges:=True 'Aqui ele fecha e salva a planilha após enviar os dados
End If

Nunca deu erro comigo, já tem 1 mês que utilizo esse caminho

 
Postado : 23/11/2016 8:43 am
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Eu tenho um macro com um critério parecido. O único caminho que eu consegui fazer, é fazendo com que o Macro abrisse a planilha e fechasse ela logo em seguida.
Veja se atende o que você precisa

Boa tarde tnunes34!

Então, acho que até pode ajudar, o problema é que eu nunca utilizei esses comandos de Loop e/ou Do, Untill, While, etc. Estou vendo uma vídeo aula sobre esse tema, não é tão fácil quanto eu achei. Vou tentar usar algo parecido com esse seu código e posto o resultado.

Obrigado.

 
Postado : 23/11/2016 11:40 am
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Eu tenho um macro com um critério parecido. O único caminho que eu consegui fazer, é fazendo com que o Macro abrisse a planilha e fechasse ela logo em seguida.
Veja se atende o que você precisa

Boa tarde tnunes34!

Então, acho que até pode ajudar, o problema é que eu nunca utilizei esses comandos de Loop e/ou Do, Untill, While, etc. Estou vendo uma vídeo aula sobre esse tema, não é tão fácil quanto eu achei. Vou tentar usar algo parecido com esse seu código e posto o resultado.

Obrigado.

Atualização: Então, não consegui nenhum resultado ainda, nem usando o código do tnunes34...

 
Postado : 23/11/2016 1:16 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Jhon,

Voltando a questão do AlexandreVba. Baseado em qual critério os dados serão importados?

Ou seja, explique detalhadamente de qual arquivo/planilha/célula a informação vai para outro arquivo/planilha/célula.

Por exemplo, a tabela 'Plan1' do arquivo dados tem que ser copiado para qual tabela do arquivo 'macro'?

att,

 
Postado : 23/11/2016 3:30 pm
(@big-jhon)
Posts: 6
Active Member
Topic starter
 

Boa tarde a todos.

Boa tarde Jhon,

Voltando a questão do AlexandreVba. Baseado em qual critério os dados serão importados?

Ou seja, explique detalhadamente de qual arquivo/planilha/célula a informação vai para outro arquivo/planilha/célula.

Por exemplo, a tabela 'Plan1' do arquivo dados tem que ser copiado para qual tabela do arquivo 'macro'?

att,

Prezados, informo-lhes que o problema foi solucionado graças as vídeo aulas do Alessandro Trovato no YouTube. Aprendi como executar o comando "Do Untill" com o critério "ActiveCell" e isso resolveu o meu problema.

Obrigado a todos pelo empenho.

 
Postado : 23/11/2016 4:23 pm