Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
rphpacheco
Creator III
Creator III

Ajuda em Macro

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

 

end 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!

1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III
Author

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

View solution in original post

1 Reply
rphpacheco
Creator III
Creator III
Author

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