Ir ao conteúdo

Posts recomendados

Postado

Olá,
Eu preciso todo mês pegar um arquivo da pasta “Arquivos passados” copiar para a planilha “Reconciliation Template (CódigoPaís_CódigoConta_FY25Q1M1)” – todo mês ela muda e muda seu nome, mas sempre é salva no mesmo lugar – copio para dentro dessa planilha e salvo como um novo arquivo com o final diferente, quando possui planilha com mesmo nome eu aceito copiar  mudar o nome para (2) por exemplo.
 
Exemplo, eu abro o arquivo: BR_112345586_XX24Q5M8 (todo mês pode ter um nome diferente, mas sempre estarão na mesma pasta) e copio todas as planilhas dentro do arquivo “Reconciliation Template (CódigoPaís_CódigoConta_FY25Q1M1)” e dou um salvar como em “Arquivos atualizados” com o mesmo padrão do arquivo original entretanto mudo o final conforme a célula B3 da planilha parâmetros: BR_112345586_ XX25Q6M9. Eu não posso copiar “Reconciliation Template (CódigoPaís_CódigoConta_FY25Q1M1)” para BR_112345586_XX24Q5M8 porque tem um saldos por traz.
 
Depois eu copio os dados da célula D3 e D4 da planilha “Conciliation Template (2)” que se refere ao arquivo passado e colo no mesmo lugar da planilha “Conciliation Template” que é a nova do arquivo.
Depois eu pegos os dados do intervalor B24:E30 de “Conciliation Template (2)”   e copio para a  planilha “Conciliation Template” e excluo a planilha “Conciliation Template (2)”   e  Support Template (2) e salvo.
 
·         C:\Conciliações\Arquivos - “Reconciliation Template (CódigoPaís_CódigoConta_FY25Q1M1)”
·         C:\Conciliações\Arquivos\Arquivos passado – onde estão salvos os arquivos que tem as informações e precisam ser copiadas para a nova
·         Local onde deve ser salvo os novos lugares: C:\Conciliações\Arquivos\Arquivos atualizados
·         C:\Conciliações: Onde tem o arquivo de parâmetros com o final do nome que deve ser atualizado

(não estou conseguindo subir o zip das pastas, então subi as pastas e o print da estrutura das pastas)

Tentei o código abaixo, mas não tive sucesso:

Sub CopyAndSaveExcelFiles()     Dim folderPath As String     Dim templateFile As String     Dim sourceFile As String     Dim filePattern As String     Dim templateWB As Workbook     Dim sourceWB As Workbook     Dim newEnding As String     Dim newFileName As String     Dim destFile As String     Dim sourceSheet As Worksheet     Dim copiedSheet As Worksheet     Dim sheetNewName As String     Dim attemptToCopy As Boolean     On Error GoTo ErrorHandler ' Controle de erros     folderPath = "C:\Nova pasta (2)\Conciliações BR\"     templateFile = Dir(folderPath & "Reconciliation Template*.xlsb", vbNormal)     If templateFile <> "" Then         Set templateWB = Workbooks.Open(folderPath & templateFile, UpdateLinks:=False)         newEnding = templateWB.Sheets(1).Range("B3&quot.Value     Else         MsgBox "Arquivo de template não encontrado.", vbExclamation         Exit Sub     End If     filePattern = "*.xlsb"     sourceFile = Dir(folderPath & filePattern, vbNormal)     Do While sourceFile <> ""         If sourceFile <> templateFile Then             Set sourceWB = Workbooks.Open(folderPath & sourceFile, UpdateLinks:=False)                         For Each sourceSheet In sourceWB.Worksheets                 attemptToCopy = False                 sheetNewName = sourceSheet.Name                                 ' Verificar se a planilha está protegida                 If sourceSheet.ProtectContents Then                     MsgBox "A planilha " & sourceSheet.Name & " está protegida. Desproteja antes de copiar.", vbExclamation                 Else                     ' Tentar copiar a planilha e verificar a falha                     On Error Resume Next                     sourceSheet.Copy After:=templateWB.Sheets(templateWB.Sheets.Count)                     If Err.Number = 0 Then                         Set copiedSheet = templateWB.Sheets(templateWB.Sheets.Count)                         attemptToCopy = True                     End If                     On Error GoTo 0                     If attemptToCopy Then                         ' Verifica se o nome já existe e renomeia se necessário                         If IsSheetNameExists(templateWB, sheetNewName) Then                             sheetNewName = GenerateUniqueSheetName(templateWB, sheetNewName)                         End If                         copiedSheet.Name = sheetNewName                         Set copiedSheet = Nothing                     Else                         MsgBox "Falha ao copiar a planilha: " & sourceSheet.Name, vbExclamation                     End If                 End If             Next sourceSheet             newFileName = Left(sourceFile, InStrRev(sourceFile, ".&quot - 1) & "_" & newEnding & ".xlsb"             destFile = folderPath & newFileName             templateWB.SaveAs destFile, FileFormat:=50             sourceWB.Close SaveChanges:=False         End If         sourceFile = Dir()     Loop     templateWB.Close SaveChanges:=False     MsgBox "Processo concluído com sucesso!", vbInformation     Exit Sub ErrorHandler:     MsgBox "Ocorreu um erro: " & Err.Description, vbExclamation     If Not sourceWB Is Nothing Then sourceWB.Close SaveChanges:=False     If Not templateWB Is Nothing Then templateWB.Close SaveChanges:=False End Sub Function IsSheetNameExists(ByVal wb As Workbook, ByVal sheetName As String) As Boolean     Dim ws As Worksheet     On Error Resume Next     Set ws = wb.Sheets(sheetName)     IsSheetNameExists = Not ws Is Nothing     On Error GoTo 0 End Function Function GenerateUniqueSheetName(ByVal wb As Workbook, ByVal baseName As String) As String     Dim num As Integer     Dim newName As String     num = 1     newName = baseName     Do While IsSheetNameExists(wb, newName)         num = num + 1         newName = baseName & "_" & num     Loop     GenerateUniqueSheetName = newName End Function

283211_ab94f337-b91f-4e7d-aed0-24e306caa292.docx

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!