1 Reply Latest reply: May 20, 2013 3:22 PM by Raphael Pacheco RSS

    Ajuda em Macro

    Raphael Pacheco

      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!

        • Re: Ajuda em Macro
          Raphael Pacheco

          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