none
Concluído - VBA Copiar células entre planilhas em janelas independentes RRS feed

  • Pergunta

  • Bom dia, pessoal.
    Talvez alguém pudesse me ajudar com uma coisa simples que não consigo fazer. Vou descrevê-la:

    - Clico em Iniciar, depois em Microsoft Excel e o sistema abre uma janela com uma planilha em branco;
    - Clico novamente em Iniciar, depois em Microsoft Excel e o sistema abre uma outra janela com uma planilha em branco;
    - Portanto, as planilhas estão em janelas do Windows diferentes. Pergunta:

    Como posso usar o VBA para copiar algo de uma das planilhas das janelas (que já estão abertas) e mandar para uma célula na outra planilha?

    Parece simples mas, não consigo resolver. Se estiverem na mesma janela do Windows é moleza. Quando estão em janelas separadas, como neste exemplo ele depura um erro.

    Isto me ajudaria porque poderia colocar o link RTD para rodar numa planilha em separado e o meu Loop da outra planilha vem buscar o "value" a cada intervalo de tempo que eu desejar. Resolveria meu problema.

    Alguém poderia me ajudar?

    domingo, 17 de dezembro de 2017 00:41

Respostas


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

    segunda-feira, 18 de dezembro de 2017 12:09
  • Você salvou os dois arquivos?

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

    Sim, salvei os dois arquivos.

    Uso normalmente o Office 2007 (tenho a licença). Mas instalei uma versão 2016 Professional para teste e deu na mesma coisa. Não funciona se eu abro em processos diferentes (instâncias do Excel diferentes). Só se eu abrir um arquivo e, depois, na mesma janela, clico em Arquivo, Abrir e Selecionar o outro arquivo desejado. Daí funciona mas, não me serve porque trava a atualização automática de links RTD, que só funcionam quando o Excel está ocioso.

    segunda-feira, 18 de dezembro de 2017 14:35

Todas as Respostas

  • https://www.youtube.com/watch?v=Iwm_6Iau2lw&t=398s

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

    domingo, 17 de dezembro de 2017 00:58
  • domingo, 17 de dezembro de 2017 01:02
  • http://www.clubedohardware.com.br/forums/topic/967381-macro-para-copiar-dados-de-uma-pasta-e-colar-valores-em-outra/

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

    domingo, 17 de dezembro de 2017 01:02
  • http://www.hardware.com.br/comunidade/v-t/1447021/

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

    domingo, 17 de dezembro de 2017 01:03
  • https://forum.baboo.com.br/index.php?/topic/766083-vba-pegar-dados-de-pastas-de-trabalho-fechadas/

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

    domingo, 17 de dezembro de 2017 01:03
  • http://www.sigaonerd.com/2016/05/VBA-TransferirDados.html

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

    domingo, 17 de dezembro de 2017 01:04
  • Sub Copiando_de_um_livro_para_outro()
    Workbooks("Base 2011").Worksheets("Plan1").Range("G3").Copy
    Workbooks("Grupo").Worksheets("Plan2").Range("P8").PasteSpecial xlPasteValues
    End Sub


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

    domingo, 17 de dezembro de 2017 01:05
  • http://excelevba.com.br/vba-copiar-colar-arquivos-diferentes/

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

    domingo, 17 de dezembro de 2017 01:08
  • Sub ImportarDados()
    'Copiar dados de um Livro para outro
            Dim wsOrigem As Worksheet
            Dim wsDestino As Worksheet
            
            'Arquivo Destino, abrimos primeiro
            'Ajuste o caminho do mesmo
            Workbooks.Open Filename:="C:\Documents and Settings\oraculo\Meus documentos\Downloads\Master.xls"
            
            'Arquivos e Abas de Origem e Destino
            Set wsOrigem = Workbooks("Dvisão.xls").Worksheets("Plan1")
            Set wsDestino = Workbooks("Master.xls").Worksheets("Plan5")
              
                With wsOrigem
                    .Range("B2:B500").Copy Destination:=wsDestino.Range("B2")
                    .Range("F2:F500").Copy Destination:=wsDestino.Range("K2")
                    .Range("J2:J500").Copy Destination:=wsDestino.Range("T2")
                End With
          
          'Fecha o Arquivo Destino e Salva
            Workbooks("Master.xls").Close SaveChanges:=True
            
            MsgBox "Introdução de Dados Concluída"
        End Sub


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

    domingo, 17 de dezembro de 2017 01:11
  • Pessoal, obrigado pela pronta resposta.

    Porém, olhei todos os links e não são o que estou precisando. O que mais se aproxima é a que pega dados de um arquivo fechado.

    My fault! Preciso dar um detalhe:

    As planilhas foram abertas em janelas diferentes, conforme descrição acima:

    "- Clico em Iniciar, depois em Microsoft Excel e o sistema abre uma janela com uma planilha em branco;
    - Clico novamente em Iniciar, depois em Microsoft Excel e o sistema abre uma outra janela com uma planilha em branco;"

    . A macro não pode abrir um arquivo fechado e daí copiar o "value" de uma das células porque a célula que desejo copiar estará sendo atualizada automaticamente através de um link RTD. Nem pode copiar de um arquivo fechado porque a atualização estaria interrompida e eu acabaria pegando sempre o mesmo valor. Os arquivos estão abertos e em janelas diferentes! Preciso copiar de uma planilha para outra com as mesmas abertas e rodando. 


    domingo, 17 de dezembro de 2017 01:31
  • Sub ImportarDados()
    'Copiar dados de um Livro para outro
            Dim wsOrigem As Worksheet
            Dim wsDestino As Worksheet
            
            
            'Arquivos e Abas de Origem e Destino
            Set wsOrigem = Workbooks("Dvisão.xls").Worksheets("Plan1")
            Set wsDestino = Workbooks("Master.xls").Worksheets("Plan5")
              
                With wsOrigem
                    .Range("B2:B500").Copy Destination:=wsDestino.Range("B2")
                    .Range("F2:F500").Copy Destination:=wsDestino.Range("K2")
                    .Range("J2:J500").Copy Destination:=wsDestino.Range("T2")
                End With
          
        End Sub


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


    domingo, 17 de dezembro de 2017 02:32
  • http://www.sigaonerd.com/2016/05/VBA-TransferirDados.html

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

    Não posso criar um Novo Workbook. Os Workbooks á existem só que estão em janelas separadas. Mas, obrigado mesmo assim.
    domingo, 17 de dezembro de 2017 10:27
  • Sub Copiando_de_um_livro_para_outro()
    Workbooks("Base 2011").Worksheets("Plan1").Range("G3").Copy
    Workbooks("Grupo").Worksheets("Plan2").Range("P8").PasteSpecial xlPasteValues
    End Sub
    Dá erro quando os arquivos não estão na mesma janela. Segue print:Erro: Não reconhece o objeto.
    domingo, 17 de dezembro de 2017 10:30
  • Sub ImportarDados()
    'Copiar dados de um Livro para outro
            Dim wsOrigem As Worksheet
            Dim wsDestino As Worksheet
            
            
            'Arquivos e Abas de Origem e Destino
            Set wsOrigem = Workbooks("Dvisão.xls").Worksheets("Plan1")
            Set wsDestino = Workbooks("Master.xls").Worksheets("Plan5")
              
                With wsOrigem
                    .Range("B2:B500").Copy Destination:=wsDestino.Range("B2")
                    .Range("F2:F500").Copy Destination:=wsDestino.Range("K2")
                    .Range("J2:J500").Copy Destination:=wsDestino.Range("T2")
                End With
          
        End Sub


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



    domingo, 17 de dezembro de 2017 10:30
  • Salve os arquivos e tente novamente. A pasta que vai conter os códigos deverá ser do tipo pasta de trabalho habilitada para macro do Excel (.xlsm)

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


    domingo, 17 de dezembro de 2017 12:57
  • Salve os arquivos e tente novamente. A pasta que vai conter os códigos deverá ser do tipo pasta de trabalho habilitada para macro do Excel (.xlsm)

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


    Obrigado por estar tentando me ajudar. Já testei com a extensão ".xlsm" e acontece a mesma coisa. Por favor, responda-me uma pergunta: 

    Aí na sua máquina você abriu os arquivos em duas janelas diferentes e deu certo? Você abriu um Excel para a primeira planilha e outro Excel para a segunda, conforme postei em negrito no início do post? E deu certo? Por que se forem na mesma janela dá certo aqui também, porém, isto não me atende. Minha necessidade é que se comuniquem em janelas diferentes.

    Novamente, muito obrigado.

    segunda-feira, 18 de dezembro de 2017 11:27
  • Você salvou os dois arquivos?

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

    segunda-feira, 18 de dezembro de 2017 12:03

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

    segunda-feira, 18 de dezembro de 2017 12:09
  • Envie-me um email que eu te mando os arquivos para você testar.

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

    segunda-feira, 18 de dezembro de 2017 12:26
  • A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

     Meu e-mail: cd_config@hotmail.com
    segunda-feira, 18 de dezembro de 2017 14:31
  • Você salvou os dois arquivos?

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

    Sim, salvei os dois arquivos.

    Uso normalmente o Office 2007 (tenho a licença). Mas instalei uma versão 2016 Professional para teste e deu na mesma coisa. Não funciona se eu abro em processos diferentes (instâncias do Excel diferentes). Só se eu abrir um arquivo e, depois, na mesma janela, clico em Arquivo, Abrir e Selecionar o outro arquivo desejado. Daí funciona mas, não me serve porque trava a atualização automática de links RTD, que só funcionam quando o Excel está ocioso.

    segunda-feira, 18 de dezembro de 2017 14:35
  •  Meu e-mail: cd_config@hotmail.com

    segunda-feira, 18 de dezembro de 2017 14:38
  • Obrigado pelo e-mail, Anderson.

    Não funcionou no Excel 2007. Daí reinstalei o 2016 e troquei a extensão de uma das minhas planilhas para ".xlsm" e funcionou. Vou colocar como concluído o tópico.

    Não querendo abusar da sua boa vontade, se por acaso você souber como faço para mandar apenas os valores quando uso"Destination:=wsDestino.Range("A1")" eu agradeceria. Na minha célula tem uma fórmula e queria mandar apenas os valores. Deste jeito de copiar e colar eu não sei como usar o ".value".

    De qualquer modo, muito obrigado mesmo.

    segunda-feira, 18 de dezembro de 2017 15:46
  • Option Explicit
    
    
    Sub ImportarDados()
        'Copiar dados de um Livro para outro
        Dim wsOrigem As Worksheet
        Dim wsDestino As Worksheet
        
        
        'Arquivos e Abas de Origem e Destino
        Set wsOrigem = Workbooks("Pasta1.xlsm").Worksheets("Planilha1")
        Set wsDestino = Workbooks("Pasta2.xlsm").Worksheets("Planilha1")
        
        With wsOrigem.Range("B2:B500")
            .Select
            .Copy
            
        End With
        
        With wsDestino.Range("B2")
            .Select
        End With
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    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, 18 de dezembro de 2017 17:35
    segunda-feira, 18 de dezembro de 2017 17:35
  • Option Explicit
    iabr2011@gmail.com
    
    Obrigado. Como voto como útil?
    segunda-feira, 18 de dezembro de 2017 18:07
  • Option Explicit
    iabr2011@gmail.com
    

    Obrigado. Como voto como útil?
    Encontrei.
    segunda-feira, 18 de dezembro de 2017 18:10