Макрос расширенного фильтра

Автор sofi, 12 июля 2014, 08:35

0 Пользователи и 1 гость просматривают эту тему.

sofi

Доброго всем время дня!
Я с OOCalc почти никак!

В VBA все решается до обидного просто:

ActiveSheet.ShowAllData
Range("B11").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B1").CurrentRegion, CopyToRange:=Sheets(3).Range("A15:L15"), Unique:=False

Нужно тоже самое сделать в OOCalc!
На сайте OO нарыл макрос:

Sub UseAnAdvancedFilter()
 Dim oSheet     'A sheet from the Calc document.
 Dim oCritRange 'Range that contains the filter criteria.
 Dim oDataRange 'Range that contains the data to filter.
 Dim oFiltDesc  'Filter descriptor.

 REM Range that contains the filter criteria
 oSheet = ThisComponent.getSheets().getByIndex(1)
 oCritRange = oSheet.getCellRangeByName("A1:G3")
 
 REM The data that I want to filter
 oSheet = ThisComponent.getSheets().getByIndex(0)
 oDataRange = oSheet.getCellRangeByName("A1:G16")

 oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
 oDataRange.filter(oFiltDesc)
End Sub

Поскольку, мне необходимо результат фильтра копировать в другой лист,
то по этому поводу сайт рекомендует следующее:

REM Copy the output data rather than filter in place.  
 oFiltDesc.CopyOutputData = True

 Dim x As New com.sun.star.table.CellAddress
 x.Sheet = 2
 x.Column = 1
 x.Row = 3
 oFiltDesc.OutputPosition = x

Но тупая вставка одного в другое, как рекомендует сайт, не работает!
Помогите люди добрые!
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

sofi

Извините за беспокойство, разобрался сам!
Нужно было определить переменную CopyOutputData !

т.е.

oFiltDesc = oSheet.createFilterDescriptor(True)
oFiltDesc.CopyOutputData = True
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!