none
Ajuda com VBA RRS feed

  • Pergunta

  • Bom glr e o seguinte eu tenho um site de excel (tabelas de futebol, Esportes... Coisas do genero) porem eu queria avançar mais, ir para o vba e acabou dando certo no começo mas logo surgiu um erro que esta me infernizando.

     Eu basicamente quero copiar uma panilha (apenas uma especifica da pasta de trabalho) e colar em outra

    E eu ñ consigo finalizar essa formula:

    Sub Exemplo()
    Dim Origem As Workbook
    Dim Destino As Workbook
    Set Origem = Workbooks.Open("D:\Documentos\Tabelas\Especiais\IDPR - Cópia")
    Set Destino = Workbooks.Open("D:\Documentos\Tabelas\Especiais\2")
    Origem.Sheets("mata-mata 127").Activate
    Activesheets.Cells ???????????
    Cells.Select
    Selection.Copy

    Destino.Sheets("Plan3").Paste
    Origem.Close SaveChanges:=False
    Destino.Close SaveChanges:=True
    End Sub

    domingo, 10 de agosto de 2014 00:44

Respostas

  • Bom dia, IuryDavila

    Analisei o seu código e vi que o raciocínio está certinho por um único detalhe. Imagino que você está trabalhando com 3 arquivos sendo o primeiro aonde está a macro, o segundo o arquivo de origem e o terceiro o destino. Neste caso quando você informa Activesheets.Cells estará fazendo referência as células da planilha aonde a macro está rodando. Sempre que trabalhar com dois arquivos garanta que o código está fazendo referência ao arquivo correto. Segue o código modificado (substitua os nomes dos arquivos e planilhas como achar melhor):

    Sub Exemplo()
        Dim Origem As Workbook
        Dim Destino As Workbook
        Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx")
        Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx")
        
        
        Origem.Sheets("Necessidade de Caixa").Activate
        Origem.ActiveSheet.Cells.Select
        'A linha abaixo irá garantir que a planilha ativa para a cópia é a de origem
        Origem.Activate
        Selection.Copy
    
        Destino.Sheets("Plan1").Activate
        Destino.ActiveSheet.Range("A1").Select
        'A linha abaixo irá garantir que os dados sejam colados no destino correto
        Destino.Activate
        Destino.ActiveSheet.Paste
    
        'Mais de 101 linhas copiadas mostra uma mensagem antes de salvar
        'O código abaixo sai do modo de cópia para ignorar esta mensagem
        Origem.Application.CutCopyMode = False
    
        Origem.Close SaveChanges:=False
        Destino.Close SaveChanges:=True
    End Sub

    Espero que isso resolva.

    Grande abraço

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    domingo, 10 de agosto de 2014 14:14
  • Simplificando um pouco:

    Sub Exemplo()
      Dim Origem As Workbook
      Dim Destino As Workbook
      Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx")
      Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx")
      
      Origem.Worksheets("Necessidade de Caixa").Cells.Copy _
      Destination:=Destino.Worksheets("Plan1").Range("A1")
      Application.CutCopyMode = False
    
      Origem.Close SaveChanges:=False
      Destino.Close SaveChanges:=True
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 13 de agosto de 2014 01:36
    Moderador

Todas as Respostas

  • Bom dia, IuryDavila

    Analisei o seu código e vi que o raciocínio está certinho por um único detalhe. Imagino que você está trabalhando com 3 arquivos sendo o primeiro aonde está a macro, o segundo o arquivo de origem e o terceiro o destino. Neste caso quando você informa Activesheets.Cells estará fazendo referência as células da planilha aonde a macro está rodando. Sempre que trabalhar com dois arquivos garanta que o código está fazendo referência ao arquivo correto. Segue o código modificado (substitua os nomes dos arquivos e planilhas como achar melhor):

    Sub Exemplo()
        Dim Origem As Workbook
        Dim Destino As Workbook
        Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx")
        Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx")
        
        
        Origem.Sheets("Necessidade de Caixa").Activate
        Origem.ActiveSheet.Cells.Select
        'A linha abaixo irá garantir que a planilha ativa para a cópia é a de origem
        Origem.Activate
        Selection.Copy
    
        Destino.Sheets("Plan1").Activate
        Destino.ActiveSheet.Range("A1").Select
        'A linha abaixo irá garantir que os dados sejam colados no destino correto
        Destino.Activate
        Destino.ActiveSheet.Paste
    
        'Mais de 101 linhas copiadas mostra uma mensagem antes de salvar
        'O código abaixo sai do modo de cópia para ignorar esta mensagem
        Origem.Application.CutCopyMode = False
    
        Origem.Close SaveChanges:=False
        Destino.Close SaveChanges:=True
    End Sub

    Espero que isso resolva.

    Grande abraço

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    domingo, 10 de agosto de 2014 14:14
  • Muito Obrigado, vai me ajudar muito... se possivel pode me add no facebook ? https://www.facebook.com/iury.davila.9

    Queria muito ter contatos como vc, pois me ajudaria muito assim como eu poderia lhe ajudar

    domingo, 10 de agosto de 2014 21:32
  • Pode me adicionar https://www.facebook.com/braulio.tatu

    Grande abraço

    domingo, 10 de agosto de 2014 22:29
  • Simplificando um pouco:

    Sub Exemplo()
      Dim Origem As Workbook
      Dim Destino As Workbook
      Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx")
      Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx")
      
      Origem.Worksheets("Necessidade de Caixa").Cells.Copy _
      Destination:=Destino.Worksheets("Plan1").Range("A1")
      Application.CutCopyMode = False
    
      Origem.Close SaveChanges:=False
      Destino.Close SaveChanges:=True
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 13 de agosto de 2014 01:36
    Moderador