Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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.
"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
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.
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.
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.
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.
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.
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ç
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ç