Relatórios diários ...
 
Notifications
Clear all

Relatórios diários adicionando novas "sheets"

5 Posts
3 Usuários
0 Reactions
879 Visualizações
(@youngflu1)
Posts: 0
New Member
Topic starter
 

Fala Galera, Bom dia!

Estou automatizando um trabalho repetitivo que faço na minha empresa e preciso fazer o seguinte:
- rodar uma macro que abra uma outra planilha, copiar os dados de uma sheet específica e trazer para essa planilha que eu rodei a macro.
- Nessa planilha vou trabalhar os dados nela. Porém como vou rodar essa macro todo dia, precisava que renomeasse a sheet para a data que rodei a macro e assim sucessivamente todos os dias.

dificuldades:
- dependendo da Versão e config do Excel, quando abrimos o excel de forma limpa, as vezes abrem 3 sheets e as vezes 1 sheet, preciso fazer como que a macro veja se tem alguma sheet sobrando e se não tiver, criar uma nova sheet com os dados da macro como citei anteriormente. Creio que dê pra fazer com IF, do tipo se no nome da sheet tenha a palavra "plan", já sei que ela não tem nada, pois na macro vai renomear para a data atual. Só não consigo fazer isso no código. Vou colocar abaixo até onde consegui fazer o código..

Sub Macro1()
'
' Macro1 Macro
'

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
 ' Abrir planilha base e copiar dados
    Workbooks.Open ("E:PROJETO VBArelatorio-teste.xlsm")
    Sheets("Relatorio Geral").Visible = True
    Sheets("Relatorio Geral").Select
    ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Agencia").ClearAllFilters       [b]'tirar filtro da coluna agencia[/b]
    Cells.Select
    Selection.EntireColumn.Hidden = False
    Selection.EntireRow.Hidden = False
    UltimaLinhaBase = Sheets("Relatorio Geral").Cells(11, 1).End(xlDown).Row
    UltimaColunaBase = Sheets("Relatorio Geral").Cells(11, 1).End(xlToRight).Column
    Sheets("Relatorio Geral").Range(Cells(11, 1), Cells(UltimaLinhaBase, UltimaColunaBase)).Copy ThisWorkbook.Sheets(1).[a1]
    Workbooks("relatorio-teste").Close False      [b] 'Fechar planilha base[/b]
   
    NomeSheet = Format(Date, "DD-MM-YYYY")
    ActiveSheet.Name = NomeSheet
    Sheets.Add , Sheets(Sheets.Count)

Nesse código que fiz acima, ele faz praticamente tudo que falei lá em cima, só que no final eu estava usando a plan1 ( que foi renomeada para a data atual) e adicionou mais uma sheet, porém duas sheets (plan2 e plan3), ficaram soltas sem dados.

Não sei se expliquei bem mas quem puder me ajudar...vlw!! abçs

 
Postado : 27/08/2018 8:23 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Youngflu1,

Boa tarde!

Confesso que não entendi muito bem o que você de fato quer... Pode ser mais simples?

 
Postado : 27/08/2018 12:43 pm
(@mprudencio)
Posts: 0
New Member
 

Se disponibilizar um arquivo talvez fique claro o que vc quer pq eu tb nao entendi

 
Postado : 27/08/2018 1:08 pm
(@youngflu1)
Posts: 0
New Member
Topic starter
 

Desculpa gente, A coisa é simples mas devo estar complicando, vou tentar detalhar...

Preciso criar uma planilha mensal onde cada sheet deverá ser um dia do mês (dia que rodar a macro).
Essa Macro precisará acessar outra planilha para copiar e colar os dados. Essa planilha base, já estará atualizada toda vez que for buscar os dados.
Ao colar na planilha, a macro deverá renomear a sheet para o dia em que eu rodei a macro.

PS: Estou tentando anexar a planilha mas diz que está muito grande, alguem sabe como reduzo para anexar?

Abçs

 
Postado : 27/08/2018 9:43 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Youngflu1,

Bom dia!

Creio que é bem simples de fazer. Todavia, é necessário seu arquivo. Faça um exemplo do seu arquivo, bem simples e pequeno, com no máximo umas 3 linhas, compacte-o com .ZIP e anexe o mesmo aqui no fórum.

 
Postado : 28/08/2018 5:17 am