123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- -->
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Hard" script:language="StarBasic">REM ***** BASIC *****
- Option Explicit
- Sub CreateRangeList()
- Dim MaxIndex as Integer
- MaxIndex = -1
- EnableStep1DialogControls(False, False, False)
- EmptySelection()
- DialogModel.lblSelection.Label = sCURRRANGES
- EmptyListbox(DialogModel.lstSelection)
- oDocument.CurrentController.Select(oSelRanges)
- If (DialogModel.optSheetRanges.State = 1) AND (DialogModel.chkComplete.State <> 1) Then
- ' Conversion on a sheet?
- SetStatusLineText(sStsRELRANGES)
- osheet = oDocument.CurrentController.GetActiveSheet
- oRanges = osheet.CellFormatRanges.createEnumeration()
- MaxIndex = AddSheetRanges(oRanges, MaxIndex, oSheet, False)
- If MaxIndex > -1 Then
- ReDim Preserve RangeList(MaxIndex)
- End If
- Else
- CreateRangeEnumeration(False)
- bRangeListDefined = True
- End If
- EnableStep1DialogControls(True, True, True)
- SetStatusLineText("")
- End Sub
- Sub CreateRangeEnumeration(bAutopilot as Boolean)
- Dim i as Integer
- Dim MaxIndex as integer
- Dim sStatustext as String
- MaxIndex = -1
- If Not bRangeListDefined Then
- ' Cellranges are not yet defined
- oSheets = oDocument.Sheets
- For i = 0 To oSheets.Count-1
- oSheet = oSheets.GetbyIndex(i)
- If bAutopilot Then
- IncreaseStatusValue(SBRELGET/osheets.Count)
- Else
- sStatustext = ReplaceString(sStsRELSHEETRANGES,Str(i+1),"%1Number%1")
- sStatustext = ReplaceString(sStatusText,oSheets.Count,"%2TotPageCount%2")
- SetStatusLineText(sStatusText)
- End If
- oRanges = osheet.CellFormatRanges.createEnumeration
- MaxIndex = AddSheetRanges(oRanges, MaxIndex, oSheet, bAutopilot)
- Next i
- Else
- If Not bAutoPilot Then
- SetStatusLineText(sStsRELRANGES)
- ' cellranges already defined
- For i = 0 To Ubound(RangeList())
- If RangeList(i) <> "" Then
- AddSingleItemToListBox(DialogModel.lstSelection, RangeList(i))
- End If
- Next
- End If
- End If
- If MaxIndex > -1 Then
- ReDim Preserve RangeList(MaxIndex)
- Else
- ReDim RangeList()
- End If
- Rangeindex = MaxIndex
- End Sub
-
-
- Function AddSheetRanges(oRanges as Object, r as Integer, oSheet as Object, bAutopilot)
- Dim RangeName as String
- Dim AddtoList as Boolean
- Dim iCurStep as Integer
- Dim MaxIndex as Integer
- iCurStep = DialogModel.Step
- While oRanges.hasMoreElements
- oRange = oRanges.NextElement
- AddToList = CheckFormatType(oRange)
- If AddToList Then
- RangeName = RetrieveRangeNamefromAddress(oRange)
- TotCellCount = TotCellCount + CountRangeCells(oRange)
- If Not bAutoPilot Then
- AddSingleItemToListbox(DialogModel.lstSelection, RangeName)
- End If
- ' The Ranges are only passed to an Array when the whole Document is the basis
- ' Redimension the RangeList Array if necessary
- MaxIndex = Ubound(RangeList())
- r = r + 1
- If r > MaxIndex Then
- MaxIndex = MaxIndex + SBRANGEUBOUND
- ReDim Preserve RangeList(MaxIndex)
- End If
- RangeList(r) = RangeName
- End If
- Wend
- AddSheetRanges = r
- End Function
- ' adds a section to the collection
- Sub SelectRange()
- Dim i as Integer
- Dim RangeName as String
- Dim SelItem as String
- Dim CurRange as String
- Dim SheetRangeName as String
- Dim DescriptionList() as String
- Dim MaxRangeIndex as Integer
- Dim StatusValue as Integer
- StatusValue = 0
- MaxRangeIndex = Ubound(SelRangeList())
- CurSheetName = oSheet.Name
- For i = 0 To MaxRangeIndex
- SelItem = SelRangeList(i)
- ' Is the Range already included in the collection?
- oRange = RetrieveRangeoutOfRangename(SelItem)
- TotCellCount = TotCellCount + CountRangeCells(oRange)
- DescriptionList() = ArrayOutofString(SelItem,".",1)
- SheetRangeName = DeleteStr(DescriptionList(0),"'")
- If SheetRangeName = CurSheetName Then
- oSelRanges.InsertbyName("",oRange)
- End If
- IncreaseStatusValue(SBRELGET/MaxRangeIndex)
- Next i
- End Sub
- Sub ConvertThehardWay(ListboxList(), SwitchFormat as Boolean, bRemove as Boolean)
- Dim i as Integer
- Dim AddCells as Long
- Dim OldStatusValue as Single
- Dim RangeName as String
- Dim LastIndex as Integer
- Dim oSelListbox as Object
- oSelListbox = DialogConvert.GetControl("lstSelection")
- Lastindex = Ubound(ListboxList())
- If TotCellCount > 0 Then
- OldStatusValue = StatusValue
- ' hard format
- For i = 0 To LastIndex
- RangeName = ListboxList(i)
- oRange = RetrieveRangeoutofRangeName(RangeName)
- ConvertCellCurrencies(oRange)
- If bRemove Then
- If oSelRanges.HasbyName(RangeName) Then
- oSelRanges.RemovebyName(RangeName)
- oDocument.CurrentController.Select(oSelRanges)
- End If
- End If
- If SwitchFormat Then
- If oRange.getPropertyState("NumberFormat") <> 1 Then
- ' Range is hard formatted
- SwitchNumberFormat(oRange, oFormats, sEuroSign)
- End If
- Else
- SwitchNumberFormat(oRange, oFormats, sEuroSign)
- End If
- AddCells = CountRangeCells(oRange)
- CurCellCount = AddCells
- IncreaseStatusValue((CurCellCount/TotCellCount)*(100-OldStatusValue))
- If bRemove Then
- RemoveListBoxItemByName(oSelListbox.Model,Rangename)
- End If
- Next
- End If
- End Sub
- Sub ConvertCellCurrencies(oRange as Object)
- Dim oValues as Object
- Dim oCells as Object
- Dim oCell as Object
- oValues = oRange.queryContentCells(com.sun.star.sheet.CellFlags.VALUE)
- If (oValues.Count > 0) Then
- oCells = oValues.Cells.createEnumeration
- While oCells.hasMoreElements
- oCell = oCells.nextElement
- ModifyObjectValuewithCurrFactor(oCell)
- Wend
- End If
- End Sub
- Sub ModifyObjectValuewithCurrFactor(oDocObject as Object)
- Dim oDocObjectValue as double
- oDocObjectValue = oDocObject.Value
- oDocObject.Value = Round(oDocObjectValue/CurrFactor, 2)
- End Sub
- Function CheckIfRangeisCurrency(FormatObject as Object)
- Dim oFormatofObject() as Object
- ' Retrieve the Format of the Object
- On Local Error GoTo NOKEY
- oFormatofObject() = oFormats.getByKey(FormatObject.NumberFormat)
- On Local Error GoTo 0
- CheckIfRangeIsCurrency = INT(oFormatofObject.Type) AND com.sun.star.util.NumberFormat.CURRENCY
- Exit Function
- NOKEY:
- CheckIfRangeisCurrency = False
- Resume CLERROR
- CLERROR:
- End Function
- Function CountColumnsForRow(IndexArray() as String, Row as Integer)
- Dim i as Integer
- Dim NoNulls as Boolean
- For i = 1 To Ubound(IndexArray,2)
- If IndexArray(Row,i)= "" Then
- NoNulls = False
- Exit For
- End If
- Next
- CountColumnsForRow = i
- End Function
- Function CountRangeCells(oRange as Object) As Long
- Dim oRangeAddress as Object
- Dim LocCellCount as Long
- oRangeAddress = oRange.RangeAddress
- LocCellCount = (oRangeAddress.EndColumn - oRangeAddress.StartColumn + 1) * (oRangeAddress.EndRow - oRangeAddress.StartRow + 1)
- CountRangeCells = LocCellCount
- End Function</script:module>
|