Ir ao conteúdo
  • Cadastre-se

Alexandre Botura

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

posts postados por Alexandre Botura

  1. 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á.

  2. 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?

  3. 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.

     

     

    Centro de Custo2.xlsx

    Centro de Custo3.xlsx

    Centro de Custo1.xlsx

  4. 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

    Capturar.PNG

    Reexibir.PNG

    adicionado 14 minutos depois

    Pessoal, consegui resolver já.

  5. 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 depois

    Onde que eu coloco como resolvido? Parece que eu tinha visto um lugara para marcar ou seria apenas um moderador mesmo?

  6. 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.

  7. 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?

  8. 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!