MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    Copiar uma aba de uma planilha do Excel para outra planilha do Excel

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    Copiar uma aba de uma planilha do Excel para outra planilha do Excel Empty Copiar uma aba de uma planilha do Excel para outra planilha do Excel

    Mensagem  Marcelo David 27/5/2023, 19:53

    Inspirado nessa dúvida desse tópico:
    https://www.maximoaccess.com/t42065-copiar-uma-aba-do-excel-para-uma-outra-planilha

    Desenvolvi esse código que realiza a cópia de uma aba de uma planilha e cola em outra planilha do Excel.

    *Atualização: Foi implementado o parâmetro VerificarAbaExiste, para verificar se a aba já existe no
    arquivo destino. Caso existe, o usuário será questionado se deve ou não prosseguir com a cópia.
    *Código amplamente comentado

    Obs.: Planilha aqui se refere ao arquivo do Excel, ou seja, a pasta de trabalho.

    Copie e cole o código em um módulo

    Código:
    'Autor: Marcelo David
    'Data: 27/05/2023
    'Propósito: Copiar uma aba de um arquivo do Excel e colar em outro arquivo do Excel
    '--------------------------------------------------------------------------------------
    'Parâmetros ---------------------------------------------------------------------------
    'PlanilhaOrigem: Planilha onde há a aba a ser copiada
    'PlanilhaDestino: Planilha que receberá a aba copiada
    'NomeAbaOrigem: Nome da aba que será copiada
    'VerificarAbaExiste: Booleano que indica se deve ou não verificar a existência da
    'aba no arquivo destino (parâmetro opcional).
    'Exemplo: -----------------------------------------------------------------------------
    'Em C: tenho duas planilhas (poderiam estar em pastas diferentes): planOrigem.xlsx
    'e planDestino.xlsx. Na aba planOrigem há a aba chamada Dados e essa aba desejo copiar
    'para a planDestino. Então basta fazer assim:
    'Call CopiarAbaExecel("C:\planOrigem.xlsx", "C:\planDestino.xlsx", "Dados")
    'Caso seja definido como True o parâmetro VerificarAbaExiste, será exibido uma MsgBox
    'pergunto se deve copiar mesmo assim a aba. Caso não defina True, a copia será reali-
    'zada independete da existencia da aba
    '--------------------------------------------------------------------------------------
    Public Sub CopiarAbaExcel(PlanilhaOrigem As String, PlanilhaDestino As String, NomeAbaOrigem As String, Optional VerificarAbaExiste As Boolean)
        Dim objExcel As Object
        Dim objPlanilhaOrigem As Object
        Dim objPlanilhaDestino As Object
        Dim objAbaOrigem As Object
        Dim objAbaDestino As Object

        On Error GoTo TrataErro
        
        'Crio uma instância do Excel
        Set objExcel = CreateObject("Excel.Application")
        
        'Abro o arquivo Excel de origem
        Set objPlanilhaOrigem = objExcel.Workbooks.Open(PlanilhaOrigem)
        
        'Abro o arquivo Excel de destino
        Set objPlanilhaDestino = objExcel.Workbooks.Open(PlanilhaDestino)
        
        'Verifico se é necessário verificar a existencia da aba origem na planilha destino
        If VerificarAbaExiste = True Then
            'Faço um laço por todas as abas do arquivo excel destino para determinar se já existe a aba a ser copiada
            For Each plan In objPlanilhaDestino.Worksheets
                'Caso a aba já exista, pegunto se deve continuar a cópia
                If plan.Name = NomeAbaOrigem Then
                    If MsgBox("O arquivo Excel destino já contém uma aba com o nome """ & NomeAbaOrigem & """. Copiar mesmo assim?", _
                              vbQuestion + vbYesNo, "Atenção") = vbNo Then GoTo Sair
                    'Somente faço a cópia se for clicado em Sim, na MsgBox.
                End If
            Next
        End If
        
        'Especifico a aba de origem que desejo copiar
        Set objAbaOrigem = objPlanilhaOrigem.Sheets(NomeAbaOrigem)
        
        'Realizo a cópia da aba origem para destino
        objAbaOrigem.Copy After:=objPlanilhaDestino.Sheets(objPlanilhaDestino.Sheets.Count)
        
        'Salvo o arquivo destino
        objPlanilhaDestino.Save
        
        objPlanilhaOrigem.saved = True
        objPlanilhaDestino.saved = True
        
        MsgBox "Aba " & NomeAbaOrigem & " copiada com sucesso.", vbInformation, "Informação"
          
    Sair:
        
        'Encerro a instância do Excel
        objExcel.Quit
        
        'Libero os objetos da memória
        Set objAbaOrigem = Nothing
        Set objAbaDestino = Nothing
        Set objPlanilhaOrigem = Nothing
        Set objPlanilhaDestino = Nothing
        Set objExcel = Nothing

        Exit Sub

    TrataErro:
        MsgBox Err.Description, vbCritical, "Erro " & Err.Number
        GoTo Sair
    End Sub


    Última edição por Marcelo David em 30/5/2023, 03:19, editado 5 vez(es) (Motivo da edição : Atualização do código: Parâmetro VerificarAbaExiste)


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Copiar uma aba de uma planilha do Excel para outra planilha do Excel Marcel11

    Fernando Lucas e crysostomo gostam desta mensagem

    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2677
    Registrado : 23/01/2018

    Copiar uma aba de uma planilha do Excel para outra planilha do Excel Empty Re: Copiar uma aba de uma planilha do Excel para outra planilha do Excel

    Mensagem  crysostomo 28/5/2023, 02:30

    Boa Marcelo, muito útil.
    Parabéns pela ideia Basketball Basketball


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender  o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.

    Marcelo David gosta desta mensagem

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    Copiar uma aba de uma planilha do Excel para outra planilha do Excel Empty Re: Copiar uma aba de uma planilha do Excel para outra planilha do Excel

    Mensagem  Alvaro Teixeira 29/5/2023, 14:43

    Olá Marcelo David,

    Parabéns e obrigado pela partilha o fórum agradece.

    Abraço

    Marcelo David gosta desta mensagem


    Conteúdo patrocinado


    Copiar uma aba de uma planilha do Excel para outra planilha do Excel Empty Re: Copiar uma aba de uma planilha do Excel para outra planilha do Excel

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 13:09