Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal.
Sei que a utilização de macros não é recomendada para o QlikVew mas no relatório que tenho serei obrigado a utilizar.
A finalidade é criar uma espécie de "Robô" que ao carregar a aplicação execute a macro que vá em cada pasta, cada nível do objeto tabela e execute um refresh.
Ou seja, ele terá de fazer a seguinte sequência: ativar a pasta COMPRAS, selecionar o objeto Tabela com o nome de "META_COM" e fará um refresh. Após isso ele irá no mesmo objeto selecionar o campo "VENDA" e fará o mesmo refresh. A ideia é descer mais dois níveis sempre selecionando um campo e atualizando.
Criei uma macro para testar:
sub Robo_Refresh
ActiveDocument.ClearAll True
'Definição das variáveis Data, Mês e Ano
Data = DateAdd("M",-1,Date())
DataMes = Month(Data)
DataAno = Year(Data)
'Após a definição das variáveis de tempo, a macro irá selecionar o ano atual
ActiveDocument.Fields("Ano").Select DataAno
'Setando uma variável com o nome COMPRAS para a pasta COMPRAS
set A=ActiveDocument.Sheets("COMPRAS")
'Ativando a pasta COMPRAS
ActiveDocument.Sheets("COMPRAS").Activate
'Setando uma variável para o objeto de calculo do realizado e das metas do documento
set obj = ActiveDocument.GetSheetObject("META_COM")
obj.Restore
ActiveDocument.Fields("INDICADOR").Select "VENDA"
set obj = ActiveDocument.GetSheetObject("META_COM")
obj.Restore
ActiveDocument.Fields("Gerente de Categoria").Select "ALEXANDRE"
set obj = ActiveDocument.GetSheetObject("META_COM")
obj.Restore
ActiveDocument.Fields("Categoria/Setor").Select "TINTAS"
set obj = ActiveDocument.GetSheetObject("META_COM")
obj.Restoreend sub
O problema é que quando mando executar, a macro atualiza apenas o último nível do código.
Sou um pouco leigo em VBA, mas será que existe algum comando que execute as etapas por vez?
Obrigado pela atenção!
Bom galera... Dei uma pesquisada na comunidade Development (QlikView Desktop) e achei uma solução para este meu problema em questão.
Inclui o seguinte comando nos intervalos de cada bloco de instrução:
ActiveDocument.GetApplication.WaitForIdle
Assim, ele realiza as seleções necessárias, espera o calculo do objeto e depois parte para as próximas seleções.
Não tive problema com relação a performance
Bom galera... Dei uma pesquisada na comunidade Development (QlikView Desktop) e achei uma solução para este meu problema em questão.
Inclui o seguinte comando nos intervalos de cada bloco de instrução:
ActiveDocument.GetApplication.WaitForIdle
Assim, ele realiza as seleções necessárias, espera o calculo do objeto e depois parte para as próximas seleções.
Não tive problema com relação a performance