Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
fonmarcelo
Contributor III
Contributor III

Extrair conteúdo do editor de script automaticamente

Boa tarde!

É possível extrair o conteúdo do editor de script do QlikView de forma automática? Via macro ou até mesmo outro tipo de rotina?

Minha ideia é criar uma rotina para que seja exportado apenas o script, em diversos documentos.

Obrigado!

Labels (2)
1 Solution

Accepted Solutions
nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP

Marcelo, você pode usar a macro abaixo

PS: A tabela TB01 possui duas colunas: a primeira com o caminho completo e nome da aplicação e a segunda só com o nome do qvw, por exemplo:

ColunaA    ColuneB

C:\Arquivos\Aplicacao1.qvw     Aplicacao1.qvw

sub abrirAplicacao(NomeApp, ordem)

  set App = ActiveDocument.GetApplication

  set novaApp = App.OpenDoc (NomeApp)

  set docprop = novaApp.GetProperties

  'Cria o arquivo txt e copia o script do documento para ele

  Set oFS = CreateObject("Scripting.FileSystemObject")

  strXmlFile = "F:\Scripts\Aplicações\"&ordem&".txt"

  Set objXMLFile = oFS.OpenTextFile(strXmlFile, 2, True, 0)

  objXMLFile.WriteLine docprop.Script

  objXMLFile.WriteLine "&&"& ordem &"&&"

  novaApp.CloseDoc

end sub

sub exportarScript

  set table = ActiveDocument.GetSheetObject( "TB01" )

  w = table.GetColumnCount

  h = table.GetRowCount

  set CellMatrix = table.GetCells2(0,0,w,h)

  for RowIter=1 to h-1 'linha 0 e o nome das colunas

         abrirAplicacao CellMatrix(RowIter)(0).Text, CellMatrix(RowIter)(1).Text       

  next

end sub

View solution in original post

10 Replies
nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP

Marcelo, você pode usar a macro abaixo

PS: A tabela TB01 possui duas colunas: a primeira com o caminho completo e nome da aplicação e a segunda só com o nome do qvw, por exemplo:

ColunaA    ColuneB

C:\Arquivos\Aplicacao1.qvw     Aplicacao1.qvw

sub abrirAplicacao(NomeApp, ordem)

  set App = ActiveDocument.GetApplication

  set novaApp = App.OpenDoc (NomeApp)

  set docprop = novaApp.GetProperties

  'Cria o arquivo txt e copia o script do documento para ele

  Set oFS = CreateObject("Scripting.FileSystemObject")

  strXmlFile = "F:\Scripts\Aplicações\"&ordem&".txt"

  Set objXMLFile = oFS.OpenTextFile(strXmlFile, 2, True, 0)

  objXMLFile.WriteLine docprop.Script

  objXMLFile.WriteLine "&&"& ordem &"&&"

  novaApp.CloseDoc

end sub

sub exportarScript

  set table = ActiveDocument.GetSheetObject( "TB01" )

  w = table.GetColumnCount

  h = table.GetRowCount

  set CellMatrix = table.GetCells2(0,0,w,h)

  for RowIter=1 to h-1 'linha 0 e o nome das colunas

         abrirAplicacao CellMatrix(RowIter)(0).Text, CellMatrix(RowIter)(1).Text       

  next

end sub

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP

Apenas para explicar...

Para exportar o script, a macro deve abrir o QVW e depois exporta-lo

fonmarcelo
Contributor III
Contributor III
Author

Muito bom!

Era isso mesmo que procurava!

Obrigado.

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP

Já precisei fazer isso uma vez

fonmarcelo
Contributor III
Contributor III
Author

Com sua ajuda, estou criando uma aplicação para "gerenciar" versões de scripts.

Em um outro código, a macro obtêm uma listagem completa de todas as pastas onde trabalhado com desenvolvimento.

Além disso, obtenho o tamanho dos arquivos e a data de atualização de cada arquivo.

A ideia é criar um app para "versionamento de scripts", sem ação alguma de outros usuários.

A cada "x" minutos esse script será executado e realizará apenas o backup dos arquivos que "trocaram de versão" (que foram modificados).

Não sei se fui muito claro, mas essa é a ideia : )

fonmarcelo
Contributor III
Contributor III
Author

Yuri, seria muito complexo pedir para a macro salvar as versões em pastas separadas? Se não existir a pasta, cria com nome do documento.

fonmarcelo
Contributor III
Contributor III
Author

Consegui...

Sub VerificaPastas

  'ActiveDocument.ClearAll

    Set fso = CreateObject("Scripting.FileSystemObject")

    set Files=ActiveDocument.Fields("File Name 2").GetPossibleValues

    for i=0 to Files.Count-1

    ActiveDocument.Fields("File Name 2").Select Files.Item(i).Text

     NomePasta = "C:\Temp\1\" & ActiveDocument.Fields("File Name 2").GetPossibleValues.Item(0).Text

     If Not fso.FolderExists(NomePasta) Then

         fso.CreateFolder (NomePasta)

     End If

  Next

  ActiveDocument.ClearAll

End Sub

Not applicable

Marcelo, você já tentou utilizar o SVN do próprio QlikView?

Estou realizando estudo disso, e lá gera os arquivos para scripts e até os objetos, relatórios, bookmarks, etc.

Para isso, basta apenas criar a pasta nome da aplicação-prj, e lá vai ser criado todos os arquivos.

fonmarcelo
Contributor III
Contributor III
Author

Tem algum material que você possa me indicar?