Notifications
Clear all

Finalizar macro com copy and paste

8 Posts
2 Usuários
0 Reactions
1,134 Visualizações
(@lurds)
Posts: 0
New Member
Topic starter
 

Boa noite!

Sou bem iniciante em macros

Estou criando uma macro para atualizar dados de um cubo OLAP já criado, selecionar esse dados e colar em outra aba, mudando o nome da aba para a data do primeiro dia da planilha. Mas preciso que esses dados sejam atualizados e salvos numa aba diaramente, inclusive finais de semana e portanto preciso que fique um cronograma de atualizacao automatico. Para isso usei os codigos:

Private Sub Workbook_Open()
    MsgBox ("Iniciando cronometro de atualização")
    Call iniTimer
End Sub
Public Sub iniTimer()
Application.OnTime EarliestTime:=Time + TimeValue("00:00:30"), Procedure:="RefreshPivotTables"

End Sub

Public Sub RefreshPivotTables()
Application.OnTime EarliestTime:=Time + TimeValue("00:00:60"), Procedure:="Copy"
End Sub

Public Sub Copy()
    Range("A5:D359").Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    ActiveSheet.Name = Range("B9").Value
    Sheets("OTB").Select
    Application.CutCopyMode = False
   
End Sub

Minha primeira duvida é que nesse formato a planilha executa o refreshpivot table mas não da sequência a dinamica de copiar e colar na outra aba, qual meu erro?! A minha segunda duvida é se nesse formato atual a planilha irá dar sequencia sempre a atualização ou somente quando o arquivo for re aberto novamente?! Preciso que a planilha atualize a cada 24hs sem necessidade de abrir o arquivo, o mesmo permanecerá aberto, preciso que no final da atualização e copy paste ele salve o arquivo e re inicie o cronometro para nova atualizacao na proxima vigesima quarta hora. Obrigado.

 
Postado : 27/01/2015 5:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Desculpe, eu não testei sua rotina!

Tente algo como:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call ChamarSuaMacroParaAtualizaTD
End Sub

Att

 
Postado : 27/01/2015 5:39 pm
(@lurds)
Posts: 0
New Member
Topic starter
 

Bom dia!

Não funcionou, ele continua a não chamar a macro, testei ela isolada e todas funcionaram, meu erro está na hora de organizar a rotina, agora está:

Private Sub Workbook_Open()
    MsgBox ("Iniciando cronometro de atualização")
    Call iniTimer
End Sub
Public Sub iniTimer()
Application.OnTime EarliestTime:=Time + TimeValue("00:00:30"), Procedure:="PivotTableUpdate"

End Sub

Private Sub Worksheet_PivotTableUpdate(ByVal Target As pivotTable)
     MsgBox ("Atualizado")
     Call Copy
End Sub

Public Sub Copy()
    Range("A5:D359").Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    ActiveSheet.Name = Range("B5").Value
    Sheets("OTB").Select
    Application.CutCopyMode = False
   
End Sub
 
Postado : 28/01/2015 6:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Há uma possibilidade de postar seu arquivo modelo compactado?

Att

 
Postado : 28/01/2015 7:54 am
(@lurds)
Posts: 0
New Member
Topic starter
 

segue arquivo modelo, o que estou precisando é:

Atualizar o modelo a cada 24hs, a partir da primeira abertura, sem necessidade de abrir novamente (permanecerá aberto). Após atualizar, copiar a planilha e colar na proxima aba, renomeando com a info da primeira linha da coluna de datas da tabela, após isso gravar o arquivo e re iniciar o cronometro para nova atualizacao.

obrigado.

 
Postado : 28/01/2015 9:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Como eu estou no trabalho, eu não sei se vou conseguir realizar os testes, em quanto isso...
Leia:
http://imasters.com.br/artigo/3485/sql- ... -no-excel/

Att

 
Postado : 28/01/2015 9:45 am
(@lurds)
Posts: 0
New Member
Topic starter
 

Pessoal?! Alguma ajuda?!

 
Postado : 29/01/2015 6:34 am
(@lurds)
Posts: 0
New Member
Topic starter
 

Boa tarde!!

Como eu estou no trabalho, eu não sei se vou conseguir realizar os testes, em quanto isso...
Leia:
http://imasters.com.br/artigo/3485/sql- ... -no-excel/

Att

Alexandre, consegue me ajudar nessa questão?!

 
Postado : 04/02/2015 1:59 pm