Hi Tobias,
first thanks for the very fast response.
The routine works with 4 tables. The two sorts run without a problem. After
table "Tabelle1", I can add three tables ("Tabelle4", "Tabelle2" and
"Tabelle3", where I want to scratch double-rows). Before I want to remove
the double-rows (after sorting "Tabelle4" and "Tabelle2"), the program
throws the exception. See the asterisks in the listing.
If you want I can send you the program as a table-file.
Thanks again.
Have a nice week.
Greetings,
Rudi
----- Original Message -----
From: "Tobias Krais" <[EMAIL PROTECTED]>
To: <dev@api.openoffice.org>
Sent: Sunday, September 14, 2008 9:48 PM
Subject: Re: [api-dev] Error exception
Hi Rudi,
I have four calc tables in one program, each has 3000 rows and 30
columns. Close to the end the routine, the system throws an error
execption. If I add a meaningless statement the routine ends one
statement before. Can somebody help me. Thanks.
please give us some code. We cannot help you without it.
Greetings, Tobias
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Sub Main
Dim Desktop As Object
Dim Platzhalter()
Dim Url As String
Dim oTabellenDokument As Object
Dim oTabellenListe As Object
Dim Tabelle1 As Object
Dim Tabelle2 As Object
Dim Tabelle3 As Object
Dim Tabelle4 As Object
Dim EndSpalte As Integer
Dim EndZeile As Integer
Dim I As Integer
Dim Cursor As Object
Rem 4.7.3 - 290
Dim ZellenBereich As New com.sun.star.table.CellRangeAddress
Rem 4.7.3 - 293
Dim ZellenAdresse As New com.sun.star.table.CellAddress
Rem 4.7.3 - 290
ZellenBereich.Sheet = 0
ZellenBereich.StartColumn = 0
ZellenBereich.StartRow = 0
ZellenBereich.EndColumn = 30
ZellenBereich.EndRow = 3300
ZellenAdresse.Sheet = 0
ZellenAdresse.Column = 0
ZellenAdresse.Row = 0
EndSpalte = ZellenBereich.EndColumn
EndZeile = ZellenBereich.EndRow
Dim ErstV As String
Dim W_ISIN As Integer
Dim W_WKN As Integer
Dim USSymbol As String
Dim Laenge As Long
Desktop = CreateUnoService("com.sun.star.frame.Desktop")
Url = "file:///a:/AktienEuroAmSonnt.sxc"
oTabellenDokument = Desktop.loadComponentFromURL(Url, "_blank", 0,
Platzhalter())
rem oTabellenDokument = ThisComponent
oTabellenListe = oTabellenDokument.getSheets()
Tabelle1 = oTabellenListe.getByIndex(0)
ZellenBereich = ThisComponent.CurrentController.getVisibleRange()
Rem ZellenBereich = ThisComponent.CurrentController
Rem Andrew Makro Abschnitt 6.23
Dim nCurCol As Integer
Dim nCurRow As Integer
Dim aAddress As String
Rem Dim sFind As String
rem Zelle = Tabelle1.GetCellbyPosition( 0, 0 )
Cursor = Tabelle1.createCursor()
rem Cursor = Tabelle1.createCursorByRange (Zelle)
Cursor.GotoEndOfUsedArea( True)
I = Cursor.getRangeAddress().EndRow
EndZeile = I + 1
If oTabellenListe.hasByName("Tabelle2") Then
MsgBox "Tabelle2 wird gelöscht"
oTabellenListe.removeByName("Tabelle2")
Else
MsgBox "Tabelle2 ist bereits gelöscht"
EndIf
If oTabellenListe.hasByName("Tabelle4") Then
MsgBox "Tabelle4 wird gelöscht"
oTabellenListe.removeByName("Tabelle4")
Else
MsgBox "Tabelle4 ist bereits gelöscht"
EndIf
If oTabellenListe.hasByName("Tabelle1") Then
MsgBox "Tabelle2 ist nicht vorhanden"
rem Tabelle1 =
oTabellenDokument.createInstance("com.sun.star.sheet.Spreadsheet")
oTabellenListe.copyByName("Tabelle1", "Tabelle2", 1)
Else
MsgBox "Tabelle1 ist nicht vorhanden"
EndIf
If oTabellenListe.hasByName("Tabelle3") Then
oTabellenListe.removeByName("Tabelle3")
MsgBox "Tabelle3 ist vorhanden"
Else
rem Tabelle1 = oTabellenDokument.createInstance("com.sun.star.sheet.Spreadsheet")
rem oTabellenListe.insertByName("Tabelle3", Tabelle1)
MsgBox "Tabelle3 ist jetzt vorhanden"
EndIf
If oTabellenListe.hasByName("Tabelle1") Then
MsgBox "Tabelle4 ist nicht vorhanden"
Tabelle1 =
oTabellenDokument.createInstance("com.sun.star.sheet.Spreadsheet")
oTabellenListe.copyByName("Tabelle1", "Tabelle4", 1)
Else
MsgBox "Tabelle4 ist nicht vorhanden"
EndIf
rem oTabellenDokument = ThisComponent
Tabelle1 = oTabellenListe.getByName("Tabelle1")
Tabelle2 = oTabellenListe.getByName("Tabelle2")
rem Tabelle3 = oTabellenListe.getByName("Tabelle3")
Tabelle4 = oTabellenListe.getByName("Tabelle4")
Dim Entry As String
Dim Entry1 As String
Dim Entry2 As String
Dim Count As Integer
Dim Count1 As Integer
Dim Temp As String
Dim Zeile As Object
Dim Zeile1 As Object
Dim ISIN As String
Dim ISIN1 As String
Dim LByte As Variant
Dim oSheetDSC As Object
Dim oDSCRange As Object
Dim aSortFields(0) As New com.sun.star.util.SortField
Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue
oSheetDSC = oTabellenliste.getByName("Tabelle4")
oDSCRange = oSheetDSC.getCellRangeByName("A1:Z2000")
aSortFields(0).Field = 2
aSortFields(0).SortAscending = TRUE
aSortDesc(0).Name = "SortFields"
aSortDesc(0).Value = aSortFields()
oDSCRange.Sort(aSortDesc())
If oTabellenListe.hasByName("Tabelle4") Then
MsgBox "Tabelle3 ist nicht vorhanden"
Tabelle4 =
oTabellenDokument.createInstance("com.sun.star.sheet.Spreadsheet")
oTabellenListe.copyByName("Tabelle4", "Tabelle3", 1)
Else
MsgBox "Tabelle3 ist vorhanden"
EndIf
**************************** I also tried the following Tabelle3 command; in this case
**************************** the error occurs before the count = 0
rem Tabelle3 = oTabellenListe.getByName("Tabelle3")
oSheetDSC = oTabellenliste.getByName("Tabelle2")
oDSCRange = oSheetDSC.getCellRangeByName("A1:Z2000")
aSortFields(0).Field = 1
aSortFields(0).SortAscending = TRUE
aSortDesc(0).Name = "SortFields"
aSortDesc(0).Value = aSortFields()
oDSCRange.Sort(aSortDesc())
rem Entry2 = Tabelle1.getCellByPosition(0, 2).String
rem Entry1 = Tabelle2.getCellByPosition(0, 2).String
rem Entry = Tabelle4.getCellByPosition(0, 2).String
**************************** after the for Count = 0 To EndZeile the errorexception occurs
For Count = 0 To EndZeile
Entry = Tabelle4.getCellByPosition(2, Count).String
Entry1 = Tabelle4.getCellByPosition(2, Count + 1).String
If Entry = Entry1 Then
ISIN = Tabelle4.getCellByPosition(12, Count).String
ISIN1 = Tabelle4.getCellByPosition(12, Count + 1).String
If ISIN = "" Then
GoTo RemoveLine
Endif
If ISIN = ISIN1 Then
GoTo RemoveLine
EndIf
PruefISIN(ISIN, ISIN1)
NextCount
Endif
RemoveLine:
rem Tabelle3.Rows.removeByName(1, 1)
rem dieser Satz wird weil doppelt vorhanden, gelöscht, indem LByte mit mit 1 gesetzt wird
LByte = Tabelle3.getCellByPosition(13, Count)
LByte.Value = 1
NextCount:
Next Count
TabelleSave
End Sub
Sub PruefISIN(ISIN, ISIN1)
Dim ISIN As String
Dim ISIN1 As String
Dim Ergebnis As String
If ISIN = ISIN1 Then
Ergebnis = ISIN
Else
Ergebnis = ISIN + ";" + ISIN1
Endif
End Sub
rem Dim oSheetDSC As Object
rem Dim oDSCRange As Object
rem Dim aSortFields(0) As New com.sun.star.util.SortField
rem Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue
rem oSheetDSC = oTabellenListe.getByName("Tabelle4")
rem oDSCRange = oSheetDSC.getCellRangeByName("A1:Z2000")
rem aSortFields(0).Field = 2
rem aSortFields(0).SortAscending = TRUE
rem aSortDesc(0).Name = "SortFields"
rem aSortDesc(0).Value = aSortFields()
rem oDSCRange.Sort(aSortDesc())
Sub TabelleSave
Dim Url As String
Dim AnzahlS As Integer
Url = "file:///a:/AktienBereinigt.sxc"
Print "Anzahl Saetze: " & AnzahlS
End Sub
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]