Alexandre Botura
-
Posts
11 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Alexandre Botura
-
-
Perfeito @Wendell Menezes muito obrigado.
Vou deixar como False então.Uma outra coisa que é mais questão de refinamento mesmo, quando eu executo a macro de uma planilha x ela abre uma outra planilha y e consolida todas as informações nessa nova planilha y aberta. Não seria possível colar nessa planilha mesmo onde possui a macro? Pois ai eu deixaria esta planilha na rede e colocaria um botãozinho numa aba para apenas clicar e já atualizar as informações.
Não sei tem alguma interferência, mas a planilha se chamaria "Base Consolidada", na Aba "Base Geral" seria inserido todos os dados copiados e ai eu criaria um botãozinho numa outra aba ou até mesmo ao lado na mesma aba "Base Geral" para que qualquer pessoa aqui do setor possa clicar e atualizar.
Brigadão desde já.
-
3 horas atrás, Wendell Menezes disse:
Experimente assim (altere o nome da pasta com os arquivos a serem consolidados).
Eu incluí uma coluna adicional com o nome do arquivo e aba de onde os dados foram copiados para facilicar uma possível reconciliação manual, mas fica seu critério manter ou remover essa parte.
EDIT 1: Lembre-se que a macro deve ser acionada de um arquivo que não seja parte da consolidação.
Sub Consolidate_Workbooks() Dim FSO As Object, wb As Object Dim Folder As String, wbWIN As String Dim wbNew As Workbook Dim ws As Worksheet Dim k As Long Set FSO = CreateObject("Scripting.FileSystemObject") Folder = "C:\Users\wende\Desktop\KSB1\" 'Pasta com as planilhas que serão abertas e copiadas Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Set wbNew = Workbooks.Add For Each wb In FSO.GetFolder(Folder).Files If InStr(1, LCase(wb), ".xls") > 0 Then Workbooks.Open (wb) wbWIN = ActiveWorkbook.Name For Each ws In ActiveWorkbook.Worksheets ws.Range("A" & IIf(k = 0, "1", "2") & ":E" & ws.Cells(Rows.Count, 1).End(xlUp).Row).Copy wbNew.Activate Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select ActiveSheet.Paste If k = 0 Then Rows(1).Delete Range("F1") = "FONTE" End If Range("F" & Cells(Rows.Count, 6).End(xlUp).Row + 1 & ":F" & Cells(Rows.Count, 1).End(xlUp).Row) = wbWIN & " - " & ws.Name Windows(wbWIN).Activate k = k + 1 Next Application.CutCopyMode = False Workbooks(wbWIN).Close False End If Next Application.ScreenUpdating = True MsgBox k & " planilhas consolidadas com Sucesso!", vbInformation, "Aviso" Application.Calculation = xlCalculationAutomatic End Sub
Oloco @Wendell Menezes , você é o bixo... muito obrigado.
Deixa eu só te perguntar uma coisa, deixando aplication.screenupdating como False implica em algo na fórmula ou apenas não vai ficar piscando o excel?
-
Resolvi deletando o arquivo .tmp (temporário) que estava na pasta:
C:\Users\alexandrebotura.SF\AppData\Roaming\Microsoft\Excel\XLINÍCIO
Quando abri o excel de novo ele estava normal, provavelmente deve ter travado no arquivo temporário.
-
Pessoal, bom dia.
Precisava muito de uma macro que realizasse a consolidação de várias planilhas que possuo de vários centros de custo na empresa.
A ideia seria a seguinte:
Como possuo cerca de 30+ planilhas e dentro dessas planilhas existem várias abas, o primeiro passo seria consolidar dentro de cada planilha uma base parcial já das abas. Isso eu consegui fazer através do código:
Sub Consolidar() 'consolida as abas do arquivo numa só Dim ws As Worksheet Dim LRo As Long Dim LRd As Long LRo = Sheets("Consolidado").Cells(Rows.Count, 1).End(xlUp).Row If LRo > 1 Then Sheets("Consolidado").Range("A2:E" & LRo).ClearContents For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Consolidado" Then LRo = ws.Cells(Rows.Count, 1).End(xlUp).Row With Sheets("Consolidado") LRd = .Cells(Rows.Count, 1).End(xlUp).Row .Cells(LRd + 1, 1).Resize(LRo - 1, 5).Value = ws.Range("A2:E" & LRo).Value End With End If Next ws End Sub
Vou anexar o exemplo de 3 planilhas de centro de custo que primeiro serão consolidadas numa aba chamada "Consolidado" dentro da própria planilha. O código acima consolida todas as abas numa só a ideia é que isso fosse realizado automaticamente para que eu não precisasse abrir 30+ planilhas e fazer uma a uma.
Depois disso eu precisava que fosse consolidado em apenas uma BASE geral todas essas abas "Consolidado" das 30+ planilhas.
É possível fazer isso de modo automático? Todas as planilhas estariam dentro de um mesmo diretório e ai elas seriam abertas automaticamente, consolidadas e depois de consolidadas teriam que ser abertas novamente para serem consolidadas em apenas uma base geral. Acredito que deva possuir um modo mais fácil de fazer isso direto, do jeito que eu to falando (que eu pensei) seria em dois passos:
1º consolidar as abas dentro de cada planilha (com o código acima) porém ainda não sei deixar automático.
2º consolidar todos as abas "Consolidado" das 30+ planilhas numa planilha de base geral.
É possível realizar isso em apenas 1 passo? Copiar as abas das 30+ planilhas já direto para uma base geral?
Muito obrigado pessoal.
-
Pessoal, bom dia.
Eu não sei o que eu dei conta de fazer ontem, mas parece que meu excel deu pau. Estava testando uma macro x e eu fechei o excel e abri uma nova pasta de trabalho normal, a partir dai o arquivo que abre agora tem um nome de "B4624BF9.tmp", conforme vocês podem ver na imagem. Já verifiquei se a planilha usual estava oculta, mas não está, ela simplesmente desapareceu. A única planilha oculta é a Personal (que é da pasta pessoal de macros).
Alguém tem alguma ideia de como resolver isso?
Obrigado
adicionado 14 minutos depoisPessoal, consegui resolver já.
-
1 minuto atrás, Wendell Menezes disse:
Ajuste essa linha De:
Sheets("Consolidado").Range("A2:E" & LRo).ClearContents
Para:
If LRo > 1 Then Sheets("Consolidado").Range("A2:E" & LRo).ClearContents
@Wendell Menezes , cara você é *****... Muito obrigado
Problema resolvido!
adicionado 2 minutos depoisOnde que eu coloco como resolvido? Parece que eu tinha visto um lugara para marcar ou seria apenas um moderador mesmo?
-
1 minuto atrás, Wendell Menezes disse:
O problema está nessa linha:
For Each ws In ThisWorkbook.Worksheets
A pasta pessoal de macros é um arquivo Excel separada. Ou seja, *Thisworkbook.Worksheets" contém todas as abas da planilha *Pasta Pessoal". Entretanto, o que você quer é que a macro rode no arquivo que estiver aberto.
Experimente assim:
For Each ws In ActiveWorkbook.Worksheets
Clique em curtir se resolvi o seu problema =)
@Wendell Menezes, cara muito obrigado. Resolveu totalmente o meu problema. Agradeço muito.
Uma última dúvida, não sei preciso abrir outro tópico, mas percebi esse inconveniente agora pouco.
Assim que rodo a macro, o nome das Colunas A1,B1,C1,D1,E1 somem, acredito que o código cole em branco essa linha e ai ela desaparece. Será que é possível alterar algo no código para que ele cole os dados das outras abas a partir da segunda linha, sem "deletar" o nome das colunas?
De qualquer modo, muito obrigado. Caso não seja possível é só me responder q eu já coloco como resolvido também.
-
1 minuto atrás, Basole disse:
O que seria "módulo da pasta pessoal" ?
@Basole a pasta pessoal de macros (personal.xlsb)
Terei que consolidar mais de 200 planilhas de cada centro de custo da empresa, por isso queria gravar a macro e atribuir um atalho pra ela e ai meu trabalho seria apenas abrir cada uma das planilhas e clicar nesse botão que será inserido na barra de ferramentas de acesso rápido do excel.
Entendeu?
-
@Basole, muito obrigado pelo seu retorno. A macro parou de dar erro, porém ela não está RODANDO dentro do módulo da pasta pessoal ainda.
Ela roda normalmente no módulo do arquivo.
Vou anexar o exemplo que estou usando para ver se você tem alguma outra ideia.
-
Pessoal, boa tarde.
Acompanho muito o fórum e até o momento já retirei muitas dúvidas graças aos esclarecimentos que já foram compartilhados aqui.
Não sei se estou postando no lugar certo, porém lá vai:
Tenho um código que está funcionando normalmente quando insiro ele num módulo dentro do próprio arquivo, porém ele não funciona quando eu insiro ele na pasta pessoal de macros.
O intuito do código é poder consolidar todos os dados das abas existentes em apenas uma aba chamada "Consolidado", colando sempre os dados na última linha vazia e isso ele faz corretamente quando o código é inserido no próprio módulo da planilha.
Sub Consolidar() 'consolida as abas do arquivo numa só Dim ws As Worksheet Dim LRo As Long Dim LRd As Long LRo = Sheets("Consolidado").Cells(Rows.Count, 1).End(xlUp).Row Sheets("Consolidado").Range("A2:E" & LRo).ClearContents For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Consolidado" Then LRo = ws.Cells(Rows.Count, 1).End(xlUp).Row With Sheets("Consolidado") LRd = .Cells(Rows.Count, 1).End(xlUp).Row .Cells(LRd + 1, 1).Resize(LRo - 1, 5).Value = ws.Range("A2:E" & LRo).Value End With End If Next ws End Sub
O erro é o seguinte:
'1004' - Erro de definição de aplicativo ou de definição de objeto
dado nesta linha:
.Cells(LRd + 1, 1).Resize(LRo - 1, 5).Value = ws.Range("A2:E" & LRo).Value
Alguém poderia me dar uma mão?
Muito obrigado
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
Consolidar várias planilhas em uma só
em Microsoft Office e similares
Postado
@Wendell Menezes muito obrigado velho, deu certo.