Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
pericles_silva
Contributor III
Contributor III

Exportar N objetos de tabela para N planilhas no Excel

Boa tarde.

Estou precisando criar uma funcionalidade onde serão exportadas N tabelas que existem dentro do meu documento Qlikview para N planilhas de um Excel.

Uma ação de um botão onde, ao clicar, realizasse essa função.

Alguém ja fez, sabe se é possível fazer isso e tem algum exemplo?

Att,

Péricles.

1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, veja o arquivo anexo.

Abraços.

Tonial.

Don't Worry, be Qlik.

View solution in original post

12 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá Pericles,

No editor de módulos:

sub Exportar

    set obj = ActiveDocument.GetSheetObject("TB02")

    obj.Export "c:\Exportar.xls",","

end sub

No Script:

STORE Exportar into c:\Exportar.xls (txt, delimiter is ',');

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Clever_Anjos
Employee
Employee

"n" Planilhas ou "n" abas de uma mesma planilha?

Se for o 2o caso segue um exemplo que cria uma planilha e vai "colando" varios objetos na mesma

sub ExportaDRF

        Set objExcelApp = CreateObject("Excel.Application")

        objExcelApp.Visible = true

        objExcelApp.DisplayAlerts = false

        Set objExcelDoc = objExcelApp.Workbooks.Add("c:\temp\ExportaDF2.xltm")

        ActiveDocument.GetSheetObject("CH93").CopyTableToClipboard false

        objExcelDoc.Sheets(1).Paste

        ActiveDocument.GetSheetObject("CH56").CopyTableToClipboard true

        objExcelDoc.Sheets(1).cells(5,1).Select

        objExcelDoc.Sheets(1).Paste

       

        set objSheet = objExcelDoc.Sheets(objExcelDoc.Sheets.Count)

        objSheet.Name = "Resumo"

       

        ' Lista de objetos que compoem o cabecalho

        Dim idCab(3)

        idCab(0) = "CH93"

        idCab(1) = "CH92"

        idCab(2) = "CH91"

        idCab(3) = "CH90"   

       

        for i = 0 to objSel.Count - 1

            ActiveDocument.Fields("NumeroEmpresa").Select objSel.Item(i).text

            ActiveDocument.GetApplication.WaitForIdle

                               

            for j = 0 to UBOUND(idCab)

               ' Copia grafico para o cabecalho do relatorio           

                ActiveDocument.GetSheetObject(idCab(j)).CopyTableToClipboard false

                objExcelDoc.Sheets(1).cells(j+1,1).Select

                objExcelDoc.Sheets(1).Paste

            next

            ActiveDocument.GetSheetObject("CH56").CopyTableToClipboard true

            objExcelDoc.Sheets(1).cells(5,1).Select

            objExcelDoc.Sheets(1).Paste

            set objSheet = objExcelDoc.Sheets(objExcelDoc.Sheets.Count)

            objSheet.Name = objSel.Item(i).text

           

        next

        ActiveDocument.fields("NumeroEmpresa").SelectValues objSel

        ActiveDocument.GetApplication.WaitForIdle

        ActiveDocument.GetSheetObject("CH59").CopyTableToClipboard true

        objExcelDoc.Sheets("Plan1").Paste

        objExcelDoc.Sheets("Plan1").Rows("1:50").RowHeight = 15

        objExcelDoc.Sheets("Plan1").Columns("A:Z").EntireColumn.AutoFit

        Msgbox("Exportação Finalizada")

    end if

end sub

pericles_silva
Contributor III
Contributor III
Author

Aderlan não entendi aonde se coloca o código STORE Exportar into c:\Exportar.xls (txt, delimiter is ',');

De qualquer forma, parece que esse código só funciona para 1 objeto de tabela. Eu tenho umas 6 ou 7 tabelas, e ao clicar no botão, o QV precisa criar apenas 1 arquivo XLS, e cada tabela do QV precisa instanciar uma planilha dentro do XLS, ou seja, no meu caso 6 planilhas.

pericles_silva
Contributor III
Contributor III
Author

Clever, 1 arquivo do Excel com N planilhas.

Você deve chamar as planilhas de abas. Se for isso são N abas (ou Plan em inglês).

Tenho 6 tabelas dentro do QV e é preciso criar 1 arquivo Excel com 6 planilhas.

aderlanrm
Partner - Specialist
Partner - Specialist

Olá Pericles,

O STORE é usado no script de carga do QVW, é útil quando precisamos gerar um extrator e/ou direcionar diferentes tipos de arquivos em caminhos diferentes, ou seja, integração entre sistemas.

Lhe mostrei duas formas de gerar aquivos, o exemplo do Clever resolve o seu problema, já que você precisa de um botão em tela para gerar 1 XLS com 6 planilhas, basta fazer alguns ajustes no código, colocar no editor de módulo e fazer a devida associação ao botão em questão.

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá Pericles,

Segue o endereço do blog do Stefan WALTHER, ele fez isso através de macro e disponibiliza esse QVW e explica como funciona.

http://www.qlikblog.at/971/qliktip-32-exporting-multiple-objects-single-excel-document/

Abraços.

Tonial.

Don't Worry, be Qlik.
pericles_silva
Contributor III
Contributor III
Author

Clever, teria como você adaptar para mim seu comando de Exportar no arquivo que segue em anexo?

Não consegui aplicar. Tem um "End If" perdido no código. Eu comentei mas será que falta mais algo?

É um pequeno arquivo de teste.

pericles_silva
Contributor III
Contributor III
Author

E ae Tonial?

Valeu pelo retorno. Ou o link está quebrado ou o site está fora do ar (pelo menos agora).

Se conseguir abrir o site, salva o HTML dele e zipa aqui pra gente?

Abç

pericles_silva
Contributor III
Contributor III
Author

Aderlan, seu código funcionou mas vou precisar alem disso.

- Preciso renomear planilhas.

- Como seria armazenar mais objetos de tabela em uma nova planilha do arquivo Excel no seu código?

abç