1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3<!--*********************************************************** 4 * 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file 9 * to you under the Apache License, Version 2.0 (the 10 * "License"); you may not use this file except in compliance 11 * with the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, 16 * software distributed under the License is distributed on an 17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18 * KIND, either express or implied. See the License for the 19 * specific language governing permissions and limitations 20 * under the License. 21 * 22 ***********************************************************--> 23<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Writer" script:language="StarBasic">REM ***** BASIC ***** 24 25 26Sub ConvertWriterTables() 27Dim CellString as String 28Dim oParagraphs as Object 29Dim oPara as Object 30Dim i as integer 31Dim sCellNames() 32Dim oCell as Object 33 oParagraphs = oDocument.Text.CreateEnumeration 34 While oParagraphs.HasMoreElements 35 oPara = oParagraphs.NextElement 36 If NOT oPara.supportsService("com.sun.star.text.Paragraph") Then 37 ' Note: As cells might be split or merged 38 ' you cannot refer to them via their indices 39 sCellNames = oPara.CellNames 40 For i = 0 To Ubound(sCellNames) 41 If sCellNames(i) <> "" Then 42 oCell = oPara.getCellByName(sCellNames(i)) 43 If CheckFormatType(oCell) Then 44 SwitchNumberFormat(oCell, oFormats, sEuroSign) 45 ModifyObjectValuewithCurrFactor(oCell) 46 End If 47 End If 48 Next 49 End If 50 Wend 51End Sub 52 53 54Sub ModifyObjectValuewithCurrFactor(oDocObject as Object) 55 oDocObjectValue = oDocObject.Value 56 oDocObject.Value = oDocObjectValue/CurrFactor 57End Sub 58 59 60Sub ConvertTextFields() 61Dim oTextFields as Object 62Dim oTextField as Object 63Dim FieldValue 64Dim oDocObjectValue as double 65Dim InstanceNames(500) as String 66Dim CurInstanceName as String 67Dim MaxIndex as Integer 68 MaxIndex = 0 69 oTextfields = oDocument.getTextfields.CreateEnumeration 70 While oTextFields.hasmoreElements 71 oTextField = oTextFields.NextElement 72 If oTextField.PropertySetInfo.HasPropertybyName("NumberFormat") Then 73 If CheckFormatType(oTextField) Then 74 If oTextField.PropertySetInfo.HasPropertybyName("Value") Then 75 If Not oTextField.SupportsService("com.sun.star.text.TextField.GetExpression") Then 76 oTextField.Content = CStr(Round(oTextField.Value/CurrFactor,2)) 77 End If 78 ElseIf oTextField.TextFieldMaster.PropertySetInfo.HasPropertyByName("Value") Then 79 CurInstanceName = oTextField.TextFieldMaster.InstanceName 80 If Not FieldinArray(InstanceNames(), MaxIndex, CurInstanceName) Then 81 oTextField.TextFieldMaster.Content = CStr(Round(oTextField.TextFieldMaster.Value/CurrFactor,2)) 82 InstanceNames(MaxIndex) = CurInstanceName 83 MaxIndex = MaxIndex + 1 84 End If 85 End If 86 SwitchNumberFormat(oTextField, oFormats, sEuroSign) 87 End If 88 End If 89 Wend 90 oDocument.GetTextFields.refresh() 91End Sub 92</script:module> 93