Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
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

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

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

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

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?