'************************************************************************* ' ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ' ' Copyright 2008 by Sun Microsystems, Inc. ' ' OpenOffice.org - a multi-platform office productivity suite ' ' $RCSfile: sc_ScDataPilotTableObj.xba,v $ ' ' $Revision: 1.3 $ ' ' This file is part of OpenOffice.org. ' ' OpenOffice.org is free software: you can redistribute it and/or modify ' it under the terms of the GNU Lesser General Public License version 3 ' only, as published by the Free Software Foundation. ' ' OpenOffice.org is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU Lesser General Public License version 3 for more details ' (a copy is included in the LICENSE file that accompanied this code). ' ' You should have received a copy of the GNU Lesser General Public License ' version 3 along with OpenOffice.org. If not, see ' ' for a copy of the LGPLv3 License. ' '************************************************************************* '************************************************************************* ' Be sure that all variables are dimensioned: option explicit ' REQUIRED VARIABLES for interface/service tests: ' Requiered for com.sun.star.container.XNamed Global cNameToSet As String ' "fixed" if name is fixed ' Required for com.sun.star.sheet.XDataPilotTable Global oOutputRange As Variant Sub CreateObj() '************************************************************************* ' COMPONENT: ' sc.ScDataPilotTableObj '************************************************************************* On Error Goto ErrHndl Dim oSheet As Object Dim i, j As Integer Dim oDataPilotTables As Object Dim oDataPilotDescriptor As Object Dim oFilterDescriptor As Object Dim oDataPilotField As Object oDoc = utils.createDocument("scalc", cObjectName) oSheet = oDoc.Sheets.getByIndex(0) for i = 1 to 5 oSheet.getCellByPosition(0, i).String = "Row" & i oSheet.getCellByPosition(i, 0).String = "Col" & i next i for i = 1 to 5 for j = 1 to 5 oSheet.getCellByPosition(i, j).Value = 2.5 * j + i next j next i Dim sCellRangeAddress As New com.sun.star.table.CellRangeAddress sCellRangeAddress.Sheet = 0 sCellRangeAddress.StartColumn = 1 sCellRangeAddress.StartRow = 0 sCellRangeAddress.EndColumn = 1 sCellRangeAddress.EndRow = 5 Dim sCellAddress As New com.sun.star.table.CellAddress sCellAddress.Sheet = 0 sCellAddress.Column = 7 sCellAddress.Row = 8 Dim FilterFields(1) As New com.sun.star.sheet.TableFilterField FilterFields(0).Connection = com.sun.star.sheet.FilterConnection.AND FilterFields(0).Field = 1 FilterFields(0).isNumeric = true FilterFields(0).StringValue = "4" FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.GREATER FilterFields(1).Connection = com.sun.star.sheet.FilterConnection.AND FilterFields(1).Field = 1 FilterFields(1).isNumeric = true FilterFields(1).StringValue = "12" FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL oDataPilotTables = oSheet.getDataPilotTables oDataPilotDescriptor = oDataPilotTables.createDataPilotDescriptor() oDataPilotDescriptor.setSourceRange(sCellRangeAddress) oFilterDescriptor = oDataPilotDescriptor.getFilterDescriptor() oFilterDescriptor.setFilterFields(FilterFields()) oDataPilotField = oDataPilotDescriptor.getDataPilotFields().getByIndex(0) oDataPilotField.Function = com.sun.star.sheet.GeneralFunction.SUM oDataPilotField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.DATA oDataPilotTables.insertNewByName(cObjectName, sCellAddress, oDataPilotDescriptor) oObj = oDataPilotTables(0) oOutputRange = sCellAddress Exit Sub ErrHndl: Test.Exception() End Sub