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
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)