xref: /trunk/main/wizards/source/depot/Internet.xba (revision 66b843ff8f1eedd2e69941f1ea52fa080f01ec28)
1cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3*3e02b54dSAndrew Rist<!--***********************************************************
4*3e02b54dSAndrew Rist *
5*3e02b54dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
6*3e02b54dSAndrew Rist * or more contributor license agreements.  See the NOTICE file
7*3e02b54dSAndrew Rist * distributed with this work for additional information
8*3e02b54dSAndrew Rist * regarding copyright ownership.  The ASF licenses this file
9*3e02b54dSAndrew Rist * to you under the Apache License, Version 2.0 (the
10*3e02b54dSAndrew Rist * "License"); you may not use this file except in compliance
11*3e02b54dSAndrew Rist * with the License.  You may obtain a copy of the License at
12*3e02b54dSAndrew Rist *
13*3e02b54dSAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
14*3e02b54dSAndrew Rist *
15*3e02b54dSAndrew Rist * Unless required by applicable law or agreed to in writing,
16*3e02b54dSAndrew Rist * software distributed under the License is distributed on an
17*3e02b54dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18*3e02b54dSAndrew Rist * KIND, either express or implied.  See the License for the
19*3e02b54dSAndrew Rist * specific language governing permissions and limitations
20*3e02b54dSAndrew Rist * under the License.
21*3e02b54dSAndrew Rist *
22*3e02b54dSAndrew Rist ***********************************************************-->
23cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Internet" script:language="StarBasic">REM  *****  BASIC  *****
24cdf0e10cSrcweirOption Explicit
25cdf0e10cSrcweirPublic sNewSheetName as String
26cdf0e10cSrcweir
27cdf0e10cSrcweirFunction CheckHistoryControls()
28cdf0e10cSrcweirDim bLocGoOn as Boolean
29cdf0e10cSrcweirDim Firstdate as Date
30cdf0e10cSrcweirDim LastDate as Date
31cdf0e10cSrcweir    LastDate = CDateFromISO(StockRatesModel.txtEndDate.Date)
32cdf0e10cSrcweir    FirstDate = CDateFromISO(StockRatesModel.txtStartDate.Date)
33cdf0e10cSrcweir    bLocGoOn = FirstDate &lt;&gt; 0 And LastDate &lt;&gt; 0
34cdf0e10cSrcweir    If bLocGoOn Then
35cdf0e10cSrcweir        If FirstDate &gt;= LastDate Then
36cdf0e10cSrcweir            Msgbox(sMsgStartDatebeforeEndDate,16, sProductname)
37cdf0e10cSrcweir            bLocGoOn = False
38cdf0e10cSrcweir        End If
39cdf0e10cSrcweir    End If
40cdf0e10cSrcweir    CheckHistoryControls = bLocGoon
41cdf0e10cSrcweirEnd Function
42cdf0e10cSrcweir
43cdf0e10cSrcweir
44cdf0e10cSrcweirSub InsertCompanyHistory()
45cdf0e10cSrcweirDim StockName as String
46cdf0e10cSrcweirDim CurRow as Integer
47cdf0e10cSrcweirDim sMsgInternetError as String
48cdf0e10cSrcweirDim CurRate as Double
49cdf0e10cSrcweirDim oCell as Object
50cdf0e10cSrcweirDim sStockID as String
51cdf0e10cSrcweirDim ChartSource as String
52cdf0e10cSrcweir    If CheckHistoryControls() Then
53cdf0e10cSrcweir        StartDate = CDateFromISO(StockRatesModel.txtStartDate.Date)
54cdf0e10cSrcweir        EndDate = CDateFromISO(StockRatesModel.txtEndDate.Date)
55cdf0e10cSrcweir        DlgStockRates.EndExecute()
56cdf0e10cSrcweir        If StockRatesModel.optDaily.State = 1 Then
57cdf0e10cSrcweir            sInterval = &quot;d&quot;
58cdf0e10cSrcweir            iStep = 1
59cdf0e10cSrcweir        ElseIf StockRatesModel.optWeekly.State = 1 Then
60cdf0e10cSrcweir            sInterval = &quot;w&quot;
61cdf0e10cSrcweir            iStep = 7
62cdf0e10cSrcweir            StartDate = StartDate - WeekDay(StartDate) + 2
63cdf0e10cSrcweir            EndDate = EndDate - WeekDay(EndDate) + 2
64cdf0e10cSrcweir        End If
65cdf0e10cSrcweir        iEndDay = Day(EndDate)
66cdf0e10cSrcweir        iEndMonth = Month(EndDate)
67cdf0e10cSrcweir        iEndYear = Year(EndDate)
68cdf0e10cSrcweir        iStartDay = Day(StartDate)
69cdf0e10cSrcweir        iStartMonth = Month(StartDate)
70cdf0e10cSrcweir        iStartYear = Year(StartDate)
71cdf0e10cSrcweir&apos;      oDocument.AddActionLock()
72cdf0e10cSrcweir        UnprotectSheets(oSheets)
73cdf0e10cSrcweir        InitializeStatusline(&quot;&quot;, 10, 1)
74cdf0e10cSrcweir        oBackGroundSheet = oSheets.GetbyName(&quot;Background&quot;)
75cdf0e10cSrcweir        StockName = DlgStockRates.GetControl(&quot;lstStockNames&quot;).GetSelectedItem()
76cdf0e10cSrcweir        CurRow = GetStockRowIndex(Stockname)
77cdf0e10cSrcweir        sStockID = oFirstSheet.GetCellByPosition(SBCOLUMNID1, CurRow).String
78cdf0e10cSrcweir        ChartSource = ReplaceString(HistoryChartSource, sStockID, &quot;&lt;StockID&gt;&quot;)
79cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, iStartDay, &quot;&lt;StartDay&gt;&quot;)
80cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, cStr(iStartMonth-1), &quot;&lt;StartMonth&gt;&quot;)
81cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, iStartYear, &quot;&lt;StartYear&gt;&quot;)
82cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, iEndDay, &quot;&lt;EndDay&gt;&quot;)
83cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, cStr(iEndMonth-1), &quot;&lt;EndMonth&gt;&quot;)
84cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, iEndYear, &quot;&lt;EndYear&gt;&quot;)
85cdf0e10cSrcweir        ChartSource = ReplaceString(ChartSource, sInterval, &quot;&lt;interval&gt;&quot;)
86cdf0e10cSrcweir        oStatusLine.SetValue(2)
87cdf0e10cSrcweir        If GetCurrentRate(ChartSource, CurRate, 1) Then
88cdf0e10cSrcweir            oStatusLine.SetValue(8)
89cdf0e10cSrcweir            UpdateValue(StockName, Today, CurRate)
90cdf0e10cSrcweir            oStatusLine.SetValue(9)
91cdf0e10cSrcweir            UpdateChart(StockName)
92cdf0e10cSrcweir            oStatusLine.SetValue(10)
93cdf0e10cSrcweir        Else
94cdf0e10cSrcweir            sMsgInternetError = Stockname &amp; &quot;: &quot; &amp; sNoInternetDataAvailable &amp; chr(13) &amp; sCheckInternetSettings
95cdf0e10cSrcweir            Msgbox(sMsgInternetError, 16, sProductname)
96cdf0e10cSrcweir        End If
97cdf0e10cSrcweir        ProtectSheets(oSheets)
98cdf0e10cSrcweir        oStatusLine.End
99cdf0e10cSrcweir        If oSheets.HasbyName(sNewSheetName) Then
100cdf0e10cSrcweir            oController.ActiveSheet = oSheets.GetByName(sNewSheetName)
101cdf0e10cSrcweir        End If
102cdf0e10cSrcweir&apos;      oDocument.RemoveActionLock()
103cdf0e10cSrcweir    End If
104cdf0e10cSrcweirEnd Sub
105cdf0e10cSrcweir
106cdf0e10cSrcweir
107cdf0e10cSrcweir
108cdf0e10cSrcweirSub InternetUpdate()
109cdf0e10cSrcweirDim i as Integer
110cdf0e10cSrcweirDim StocksCount as Integer
111cdf0e10cSrcweirDim iStartRow as Integer
112cdf0e10cSrcweirDim sUrl as String
113cdf0e10cSrcweirDim StockName as String
114cdf0e10cSrcweirDim CurRate as Double
115cdf0e10cSrcweirDim oCell as Object
116cdf0e10cSrcweirDim sMsgInternetError as String
117cdf0e10cSrcweirDim sStockID as String
118cdf0e10cSrcweirDim ChartSource as String
119cdf0e10cSrcweir&apos;  oDocument.AddActionLock()
120cdf0e10cSrcweir    Initialize(True)
121cdf0e10cSrcweir    UnprotectSheets(oSheets)
122cdf0e10cSrcweir    StocksCount = GetStocksCount(iStartRow)
123cdf0e10cSrcweir    InitializeStatusline(&quot;&quot;, StocksCount + 1, 1)
124cdf0e10cSrcweir    Today = CDate(Date)
125cdf0e10cSrcweir    For i = iStartRow + 1 To iStartRow + StocksCount
126cdf0e10cSrcweir        StockName = oFirstSheet.GetCellbyPosition(SBCOLUMNNAME1, i).String
127cdf0e10cSrcweir        sStockID = oFirstSheet.GetCellByPosition(SBCOLUMNID1, i).String
128cdf0e10cSrcweir        ChartSource = ReplaceString(sCurChartSource, sStockID, &quot;&lt;StockID&gt;&quot;)
129cdf0e10cSrcweir        If GetCurrentRate(ChartSource, CurRate, 0) Then
130cdf0e10cSrcweir            InsertCurrentValue(CurRate, i, Now)
131cdf0e10cSrcweir        Else
132cdf0e10cSrcweir            sMsgInternetError = Stockname &amp; &quot;: &quot; &amp; sNoInternetDataAvailable &amp; chr(13) &amp; sCheckInternetSettings
133cdf0e10cSrcweir            Msgbox(sMsgInternetError, 16, sProductname)
134cdf0e10cSrcweir        End If
135cdf0e10cSrcweir        oStatusline.SetValue(i - iStartRow + 1)
136cdf0e10cSrcweir    Next
137cdf0e10cSrcweir    ProtectSheets(oSheets)
138cdf0e10cSrcweir    oStatusLine.End
139cdf0e10cSrcweir&apos;  oDocument.RemoveActionLock
140cdf0e10cSrcweirEnd Sub
141cdf0e10cSrcweir
142cdf0e10cSrcweir
143cdf0e10cSrcweir
144cdf0e10cSrcweirFunction GetCurrentRate(sUrl as String, fValue As Double, iValueRow as Integer) as Boolean
145cdf0e10cSrcweirDim sFilter As String
146cdf0e10cSrcweirDim sOptions As String
147cdf0e10cSrcweirDim oLinkSheet As Object
148cdf0e10cSrcweirDim sDate as String
149cdf0e10cSrcweir    If oSheets.hasByName(&quot;Link&quot;) Then
150cdf0e10cSrcweir        oLinkSheet = oSheets.getByName(&quot;Link&quot;)
151cdf0e10cSrcweir    Else
152cdf0e10cSrcweir        oLinkSheet = oDocument.createInstance(&quot;com.sun.star.sheet.Spreadsheet&quot;)
153cdf0e10cSrcweir        oSheets.insertByName(&quot;Link&quot;, oLinkSheet)
154cdf0e10cSrcweir        oLinkSheet.IsVisible = False
155cdf0e10cSrcweir    End If
156cdf0e10cSrcweir
157cdf0e10cSrcweir    sFilter = &quot;Text - txt - csv (StarCalc)&quot;
158cdf0e10cSrcweir    sOptions = sCurSeparator &amp; &quot;,34,SYSTEM,1,1/10/2/10/3/10/4/10/5/10/6/10/7/10/8/10/9/10&quot;
159cdf0e10cSrcweir
160cdf0e10cSrcweir    oLinkSheet.LinkMode = com.sun.star.sheet.SheetLinkMode.NONE
161cdf0e10cSrcweir    oLinkSheet.link(sUrl, &quot;&quot;, sFilter, sOptions, 1 )
162cdf0e10cSrcweir    fValue = oLinkSheet.getCellByPosition(iValueCol, iValueRow).Value
163cdf0e10cSrcweir    If fValue = 0 Then
164cdf0e10cSrcweir        Dim sValue as String
165cdf0e10cSrcweir        sValue = oLinkSheet.getCellByPosition(1, iValueRow).String
166cdf0e10cSrcweir        sValue = ReplaceString(sValue, &quot;.&quot;,&quot;,&quot;)
167cdf0e10cSrcweir        fValue = Val(sValue)
168cdf0e10cSrcweir    End If
169cdf0e10cSrcweir    GetCurrentRate = fValue &lt;&gt; 0
170cdf0e10cSrcweirEnd Function
171cdf0e10cSrcweir
172cdf0e10cSrcweir
173cdf0e10cSrcweir
174cdf0e10cSrcweirSub UpdateValue(ByVal sName As String, fDate As Double, fValue As Double )
175cdf0e10cSrcweirDim oSheet As Object
176cdf0e10cSrcweirDim iColumn As Long
177cdf0e10cSrcweirDim iRow As Long
178cdf0e10cSrcweirDim i as Integer
179cdf0e10cSrcweirDim oCell As Object
180cdf0e10cSrcweirDim LastDate as Date
181cdf0e10cSrcweirDim bLeaveLoop as Boolean
182cdf0e10cSrcweirDim RemoveCount as Integer
183cdf0e10cSrcweirDim iLastRow as Integer
184cdf0e10cSrcweirDim iLastLinkRow as Integer
185cdf0e10cSrcweirDim dDate as Date
186cdf0e10cSrcweirDim CurDate as Date
187cdf0e10cSrcweirDim oLinkSheet as Object
188cdf0e10cSrcweirDim StartIndex as Integer
189cdf0e10cSrcweirDim iCellValue as Long
190cdf0e10cSrcweir    &apos; Insert Sheet with Company - Chart
191cdf0e10cSrcweir    sName = CheckNewSheetname(oSheets, sName)
192cdf0e10cSrcweir    If NOT oSheets.hasByName(sName) Then
193cdf0e10cSrcweir        oSheets.CopybyName(&quot;Background&quot;, sName, oSheets.Count)
194cdf0e10cSrcweir        oSheet = oSheets.getByName(sName)
195cdf0e10cSrcweir        iCurRow = SBSTARTROW
196cdf0e10cSrcweir        iMaxRow = iCurRow
197cdf0e10cSrcweir        oCell = oSheet.getCellByPosition(SBDATECOLUMN, iCurRow)
198cdf0e10cSrcweir        oCell.Value = fDate
199cdf0e10cSrcweir    End If
200cdf0e10cSrcweir    sNewSheetName = sName
201cdf0e10cSrcweir    oLinkSheet = oSheets.GetByName(&quot;Link&quot;)
202cdf0e10cSrcweir    oSheet = oSheets.getByName(sName)
203cdf0e10cSrcweir    iLastRow = GetLastUsedRow(oSheet)- 2
204cdf0e10cSrcweir    iLastLinkRow = GetLastUsedRow(oLinkSheet)
205cdf0e10cSrcweir    iCurRow = iLastRow
206cdf0e10cSrcweir    bLeaveLoop = False
207cdf0e10cSrcweir    RemoveCount = 0
208cdf0e10cSrcweir    &apos; Delete all Cells in Date Area
209cdf0e10cSrcweir    Do
210cdf0e10cSrcweir        oCell = oSheet.GetCellbyPosition(SBDATECOLUMN,iCurRow)
211cdf0e10cSrcweir        If oCell.CellStyle = sColumnHeader Then
212cdf0e10cSrcweir            bLeaveLoop = True
213cdf0e10cSrcweir            StartIndex = iCurRow
214cdf0e10cSrcweir            iCurRow = iCurRow + 1
215cdf0e10cSrcweir        Else
216cdf0e10cSrcweir            RemoveCount = RemoveCount + 1
217cdf0e10cSrcweir            iCurRow = iCurRow - 1
218cdf0e10cSrcweir        End If
219cdf0e10cSrcweir    Loop Until bLeaveLoop
220cdf0e10cSrcweir    If RemoveCount &gt; 1 Then
221cdf0e10cSrcweir        oSheet.Rows.RemoveByIndex(iCurRow, RemoveCount-1)
222cdf0e10cSrcweir    End If
223cdf0e10cSrcweir    For i = 1 To iLastLinkRow
224cdf0e10cSrcweir        oCell = oSheet.GetCellbyPosition(SBDATECOLUMN,iCurRow)
225cdf0e10cSrcweir        iCellValue = oLinkSheet.GetCellByPosition(0,i).Value
226cdf0e10cSrcweir        If iCellValue &gt; 0 Then
227cdf0e10cSrcweir            oCell.SetValue(oLinkSheet.GetCellByPosition(0,i).Value)
228cdf0e10cSrcweir        Else
229cdf0e10cSrcweir            oCell.SetValue(StringToDate(oLinkSheet.GetCellByPosition(0,i).String)
230cdf0e10cSrcweir        End If
231cdf0e10cSrcweir        oCell = oSheet.GetCellbyPosition(SBVALUECOLUMN,iCurRow)
232cdf0e10cSrcweir        oCell.SetValue(oLinkSheet.GetCellByPosition(4,i).Value)
233cdf0e10cSrcweir        If i &lt; iLastLinkRow Then
234cdf0e10cSrcweir            iCurRow = iCurRow + 1
235cdf0e10cSrcweir            oSheet.Rows.InsertByIndex(iCurRow,1)
236cdf0e10cSrcweir        End If
237cdf0e10cSrcweir    Next i
238cdf0e10cSrcweir    iMaxRow = iCurRow
239cdf0e10cSrcweirEnd Sub
240cdf0e10cSrcweir
241cdf0e10cSrcweir
242cdf0e10cSrcweirFunction StringToDate(DateString as String) as Date
243cdf0e10cSrcweirDim ShortMonths(11)
244cdf0e10cSrcweirDim DateList() as String
245cdf0e10cSrcweirDim MaxIndex as Integer
246cdf0e10cSrcweirDim i as Integer
247cdf0e10cSrcweir    ShortMonths(0) = &quot;Jan&quot;
248cdf0e10cSrcweir    ShortMonths(1) = &quot;Feb&quot;
249cdf0e10cSrcweir    ShortMonths(2) = &quot;Mar&quot;
250cdf0e10cSrcweir    ShortMonths(3) = &quot;Apr&quot;
251cdf0e10cSrcweir    ShortMonths(4) = &quot;May&quot;
252cdf0e10cSrcweir    ShortMonths(5) = &quot;Jun&quot;
253cdf0e10cSrcweir    ShortMonths(6) = &quot;Jul&quot;
254cdf0e10cSrcweir    ShortMonths(7) = &quot;Aug&quot;
255cdf0e10cSrcweir    ShortMonths(8) = &quot;Sep&quot;
256cdf0e10cSrcweir    ShortMonths(9) = &quot;Oct&quot;
257cdf0e10cSrcweir    ShortMonths(10) = &quot;Nov&quot;
258cdf0e10cSrcweir    ShortMonths(11) = &quot;Dec&quot;
259cdf0e10cSrcweir    For i = 0 To 11
260cdf0e10cSrcweir        DateString = ReplaceString(DateString,CStr(i+1),ShortMonths(i))
261cdf0e10cSrcweir    Next i
262cdf0e10cSrcweir    DateString = ReplaceString(DateString, &quot;.&quot;, &quot;-&quot;)
263cdf0e10cSrcweir    StringToDate = CDate(DateString)
264cdf0e10cSrcweirEnd Function
265cdf0e10cSrcweir
266cdf0e10cSrcweir
267cdf0e10cSrcweirSub UpdateChart(sName As String)
268cdf0e10cSrcweirDim oSheet As Object
269cdf0e10cSrcweirDim oCell As Object, oCursor As Object
270cdf0e10cSrcweirDim oChartRange As Object
271cdf0e10cSrcweirDim oEmbeddedChart As Object, oCharts As Object
272cdf0e10cSrcweirDim oChart As Object, oDiagram As Object
273cdf0e10cSrcweirDim oYAxis As Object, oXAxis As Object
274cdf0e10cSrcweirDim fMin As Double, fMax As Double
275cdf0e10cSrcweirDim nDateFormat As Long
276cdf0e10cSrcweirDim aPos As Variant
277cdf0e10cSrcweirDim aSize As Variant
278cdf0e10cSrcweirDim oContainerChart as Object
279cdf0e10cSrcweirDim mRangeAddresses(0) as New com.sun.star.table.CellRangeAddress
280cdf0e10cSrcweir    mRangeAddresses(0).Sheet = GetSheetIndex(oSheets, sNewSheetName)
281cdf0e10cSrcweir    mRangeAddresses(0).StartColumn = SBDATECOLUMN
282cdf0e10cSrcweir    mRangeAddresses(0).StartRow = SBSTARTROW-1
283cdf0e10cSrcweir    mRangeAddresses(0).EndColumn = SBVALUECOLUMN
284cdf0e10cSrcweir    mRangeAddresses(0).EndRow = iMaxRow
285cdf0e10cSrcweir
286cdf0e10cSrcweir    oSheet = oDocument.Sheets.getByName(sNewSheetName)
287cdf0e10cSrcweir    oCharts = oSheet.Charts
288cdf0e10cSrcweir
289cdf0e10cSrcweir    If Not oCharts.hasElements Then
290cdf0e10cSrcweir        oSheet.GetCellbyPosition(2,2).SetString(sName)
291cdf0e10cSrcweir        oChartRange = oSheet.getCellRangeByPosition(SBDATECOLUMN,6,5,SBSTARTROW-3)
292cdf0e10cSrcweir        aPos = oChartRange.Position
293cdf0e10cSrcweir        aSize = oChartRange.Size
294cdf0e10cSrcweir
295cdf0e10cSrcweir        Dim oRectangleShape As New com.sun.star.awt.Rectangle
296cdf0e10cSrcweir        oRectangleShape.X = aPos.X
297cdf0e10cSrcweir        oRectangleShape.Y = aPos.Y
298cdf0e10cSrcweir        oRectangleShape.Width = aSize.Width
299cdf0e10cSrcweir        oRectangleShape.Height = aSize.Height
300cdf0e10cSrcweir        oCharts.addNewByName(sName, oRectangleShape, mRangeAddresses(), True, False)
301cdf0e10cSrcweir        oContainerChart = oCharts.getByName(sName)
302cdf0e10cSrcweir        oChart = oContainerChart.EmbeddedObject
303cdf0e10cSrcweir        oChart.Title.String = &quot;&quot;
304cdf0e10cSrcweir        oChart.HasLegend = False
305cdf0e10cSrcweir        oChart.diagram = oChart.createInstance(&quot;com.sun.star.chart.XYDiagram&quot;)
306cdf0e10cSrcweir        oDiagram = oChart.Diagram
307cdf0e10cSrcweir        oDiagram.DataRowSource = com.sun.star.chart.ChartDataRowSource.COLUMNS
308cdf0e10cSrcweir        oChart.Area.LineStyle = com.sun.star.drawing.LineStyle.SOLID
309cdf0e10cSrcweir        oXAxis = oDiagram.XAxis
310cdf0e10cSrcweir        oXAxis.TextBreak = False
311cdf0e10cSrcweir        nDateFormat = oXAxis.NumberFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocLocale)
312cdf0e10cSrcweir
313cdf0e10cSrcweir        oYAxis = oDiagram.getYAxis()
314cdf0e10cSrcweir        oYAxis.AutoOrigin = True
315cdf0e10cSrcweir    Else
316cdf0e10cSrcweir        oChart = oCharts(0)
317cdf0e10cSrcweir        oChart.Ranges = mRangeAddresses()
318cdf0e10cSrcweir        oChart.HasRowHeaders = False
319cdf0e10cSrcweir        oEmbeddedChart = oChart.EmbeddedObject
320cdf0e10cSrcweir        oDiagram = oEmbeddedChart.Diagram
321cdf0e10cSrcweir        oXAxis = oDiagram.XAxis
322cdf0e10cSrcweir    End If
323cdf0e10cSrcweir    oXAxis.AutoStepMain = False
324cdf0e10cSrcweir    oXAxis.AutoStepHelp = False
325cdf0e10cSrcweir    oXAxis.StepMain = iStep
326cdf0e10cSrcweir    oXAxis.StepHelp = iStep
327cdf0e10cSrcweir    fMin = oSheet.getCellByPosition(SBDATECOLUMN,SBSTARTROW).Value
328cdf0e10cSrcweir    fMax = oSheet.getCellByPosition(SBDATECOLUMN,iMaxRow).Value
329cdf0e10cSrcweir    oXAxis.Min = fMin
330cdf0e10cSrcweir    oXAxis.Max = fMax
331cdf0e10cSrcweir    oXAxis.AutoMin = False
332cdf0e10cSrcweir    oXAxis.AutoMax = False
333cdf0e10cSrcweirEnd Sub
334cdf0e10cSrcweir
335cdf0e10cSrcweir
336cdf0e10cSrcweirSub CalculateChartafterSplit(SheetName, NewNumber, OldNumber, NoteText, SplitDate)
337cdf0e10cSrcweirDim oSheet as Object
338cdf0e10cSrcweirDim i as Integer
339cdf0e10cSrcweirDim oValueCell as Object
340cdf0e10cSrcweirDim oDateCell as Object
341cdf0e10cSrcweirDim bLeaveLoop as Boolean
342cdf0e10cSrcweir    If oSheets.HasbyName(SheetName) Then
343cdf0e10cSrcweir        oSheet = oSheets.GetbyName(SheetName)
344cdf0e10cSrcweir        i = 0
345cdf0e10cSrcweir        bLeaveLoop = False
346cdf0e10cSrcweir        Do
347cdf0e10cSrcweir            oValueCell = oSheet.GetCellbyPosition(SBVALUECOLUMN, SBSTARTROW + i)
348cdf0e10cSrcweir            If oValueCell.CellStyle = CurrCellStyle Then
349cdf0e10cSrcweir                SplitCellValue(oSheet, OldNumber, NewNumber, SBVALUECOLUMN, SBSTARTROW + i, &quot;&quot;)
350cdf0e10cSrcweir                i = i + 1
351cdf0e10cSrcweir            Else
352cdf0e10cSrcweir                bLeaveLoop = True
353cdf0e10cSrcweir            End If
354cdf0e10cSrcweir        Loop Until bLeaveLoop
355cdf0e10cSrcweir        oDateCell = oSheet.GetCellbyPosition(SBDATECOLUMN, SBSTARTROW + i-1)
356cdf0e10cSrcweir        oDateCell.Annotation.SetString(NoteText)
357cdf0e10cSrcweir    End If
358cdf0e10cSrcweirEnd Sub
359cdf0e10cSrcweir</script:module>
360