Reply – Re: Выгрузка на разные листы Excel
Your Name
Subject
Message
or Cancel
In Reply To
Re: Выгрузка на разные листы Excel
— by nick1111 nick1111
Добавлю.

Пример макроса для выгрузки нескольких таблиц в Excel. Фильтр применяется в цикле для всех выбранных значений поля Dim1 и создается отдельный файл Excel с таблицами для каждого значения.

Автор макроса - не я.

В редакторе макросов необходимо слева выставить системный доступ в 2х полях настройки безопасности.

Макрос будет работать только в толстом клиенте или в IE с установленным QlikView IE plugin.

Так же, например:
http://community.qlikview.com/message/38479#38479


sub Export2 '3 диаграммы в каждый xls для каждого значения измерения Dim1

set f = activedocument.Fields("Dim1")

if IsEmpty(f.GetSelectedValues) then
set pv = f.GetSelectedValues 'adds selected values if any
else
set pv = f.GetPossibleValues(1000) 'adds possible values if none selected
end if

set Array1 = f.GetNoValues 'empty array
for i = 0 to pv.count-1 'adds values from the first array
Array1.Add
Array1(i).Text = pv.item(i).Text
Array1(i).IsNumeric = false 'if text in your field
next

'Creates a path and a filename of the output xls-file in the same folder as the current document
Path = ActiveDocument.Evaluate("left(DocumentPath(), index(DocumentPath(), '\', -1))")
'Path = "C:\" 'your static path if you dont want a dynamic path
'set obj = ActiveDocument.GetSheetObject("CH01") 'the ID of the object you want to export

'Loop through each selection in your field
for i = 0 to Array1.count-1
f.Select Array1(i).Text 'Selects one value in your field at a time

'Sets the FileName to be the same as the selection in your chosen field

FileName =Replace( Replace(Array1(i).Text," ","_"),"""","_") & ".xlsx"

' Starts Excel
set XLApp = CreateObject("Excel.Application")
' Makes it run in background
XLApp.Visible = False
set XLDoc = XLApp.Workbooks.Add

' Set the cell to start in at A1
Set rngStart = XLDoc.WorkSheets(1)  '.Range("A1")
'   Set curSheet = curWorkBook.WorkSheets(1)
'loop

chartArray = Array("CH01","CH02", "CH03")

usedRows=0

    rngStart.Cells(usedRows+1, 1)= Array1(i).Text
    usedRows=2
   
For Each chart In chartArray

   Set obj = ActiveDocument.GetSheetObject(chart)

    chartCaption = obj.GetCaption.Name.v



    rngStart.Cells(usedRows+1, 1)=chartCaption

     obj.CopyTableToClipboard true

     rngStart.Cells(usedRows+3, 1).Select

     rngStart.Paste

     usedRows=rngStart.UsedRange.Rows.Count+3
     '--->function to get the first unused row


Next

'loop end
'' Copies the chosen object contents to clipboard
'obj.CopyTableToClipboard true
'' Paste it into excel
'XLDoc.Sheets(1).Paste()


' Save the excel-file with the dynamic path and filename
XLDoc.SaveAs Path & FileName
' Closes the active document
XLDoc.Close
' Close the instanced object references of excel
set rngStart = nothing
set XLDoc = nothing
' Exits the current running Excel
XLApp.Quit
' Closing final object reference
set XLApp = nothing
next
end sub