Qlikview: информация о скрытых листах

getsheetbyId можно использовать для доступа к скрытому листу, но для этого требуется идентификатор листа.
Например:
ActiveDocument.GetSheetByID("SH03");
Как получить идентификатор скрытого листа, соответствующий каждому скрытому листу в Документ qlikview.


person user3689126    schedule 17.07.2014    source источник


Ответы (1)


После некоторых исследований стало ясно, что вы не можете получить доступ к скрытым листам (т. е. листам с установленным условием видимости) с помощью макроса QlikView. Насколько я могу судить, это связано с моделью безопасности QlikView.

Если лист виден, вы можете получить доступ к идентификатору листа следующим образом (например, для активного листа):

ActiveDocument.ActiveSheet.GetProperties.SheetID

Это даст вам строку с идентификатором в формате Document\<sheet id>, например, Document\SH01.

Если вы хотите преобразовать это только в идентификатор, вы можете использовать это:

fullShtID = ActiveDocument.ActiveSheet.GetProperties.SheetID
shtID = mid(fullShtID,instr(fullShtID,"\")+1)

shtID даст вам только SH01 и т. д.

Однако для «скрытых» листов самым простым способом было бы установить условие видимости листов на переменную, а затем изменить переменную из кода макроса. Это позволит вам отобразить «скрытый» лист, записать идентификатор (как указано выше), а затем вы можете снова скрыть его, установив переменную. Помимо этого обходного пути, нет прямого способа сделать это.

person i_saw_drones    schedule 18.07.2014
comment
этот метод предназначен для листов, которые не скрыты. И при выполнении последнего цикла for выдает ошибку ActiveDocument.Sheets не определен. Я хочу получить идентификатор скрытого листа в документе qlikview. - person user3689126; 18.07.2014
comment
В настоящее время я использую это: NO_Of_SHEETS = QvDoc.NoOfSheets, а затем цикл for For j = 0 To NO_OF_SHEETS-1 QvDoc.GetSheet(j).GetProperties.SheetId Далее: но NoofSheets не фиксирует скрытые листы - person user3689126; 18.07.2014