[Gelöst] Zelle mit best. Wert, Leerzeile darüber einfügen.

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

[Gelöst] Zelle mit best. Wert, Leerzeile darüber einfügen.

Beitrag von MikeRo »

Ich stehe wieder vor einem Problem,

ich möchte eine Calc Dokument erstellen, welches einigermaßen Automatisiert ist.

Ich habe schon so einiges hin bekommen.

Ich brauche noch einen Tipp, wie ich es schaffe, das wenn ich bei einer Liste an Daten, die Teilergebnisse erstelle, die letzte erstellte Zeile mit den Gesamtergebnissen nicht direkt unter dem letzten Datensatz ist, sondern, dazwischen zwei Leerzeilen sind. Damit es übersichtlicher ist.

Heißt, wenn in Zeile X Gesamtergebnis steht, füge über der Zeile zwei leere Zeilen ein.

*Edit*

Hier Die Lösung des Problems für andere. :) Es wird Gesamtergebnis gesucht, darüber eine Spalte eingefügt, dann werden alle Spalten nach Ergebnis durchsucht und löschen das Wort Ergebnis. Man kann es ja anpassen wie man es braucht.

Code: Alles auswählen

Sub Main

oDoc = thisComponent
for i = 0 to odoc.sheets().count() -1
oSheet = oDoc.Sheets( i )
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "A1:Z60000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
      For each cell in oResult
      nRow = cell.celladdress.row
      nCol = cell.celladdress.column
      If Len(oSheet.getCellByPosition(nCol,nRow-1).String) > 0 Then
         orows.insertbyindex( nRow , 1 )     
         osheet.getcellrangebyposition( 0 , nRow , 99 , nRow ).cellstyle = "Standard"
      End If
   Next cell
End If
next i

rem --------------------------------------------------------suchen und ersetzen
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:TableSelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 1
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = false
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = 65536
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = "Ergebnis"
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(17) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SearchItem.StyleFamily"
args3(0).Value = 2
args3(1).Name = "SearchItem.CellType"
args3(1).Value = 1
args3(2).Name = "SearchItem.RowDirection"
args3(2).Value = false
args3(3).Name = "SearchItem.AllTables"
args3(3).Value = false
args3(4).Name = "SearchItem.Backward"
args3(4).Value = false
args3(5).Name = "SearchItem.Pattern"
args3(5).Value = false
args3(6).Name = "SearchItem.Content"
args3(6).Value = false
args3(7).Name = "SearchItem.AsianOptions"
args3(7).Value = false
args3(8).Name = "SearchItem.AlgorithmType"
args3(8).Value = 0
args3(9).Name = "SearchItem.SearchFlags"
args3(9).Value = 65536
args3(10).Name = "SearchItem.SearchString"
args3(10).Value = "Ergebnis"
args3(11).Name = "SearchItem.ReplaceString"
args3(11).Value = ""
args3(12).Name = "SearchItem.Locale"
args3(12).Value = 255
args3(13).Name = "SearchItem.ChangedChars"
args3(13).Value = 2
args3(14).Name = "SearchItem.DeletedChars"
args3(14).Value = 2
args3(15).Name = "SearchItem.InsertedChars"
args3(15).Value = 2
args3(16).Name = "SearchItem.TransliterateFlags"
args3(16).Value = 1024
args3(17).Name = "SearchItem.Command"
args3(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(17) as new com.sun.star.beans.PropertyValue
args4(0).Name = "SearchItem.StyleFamily"
args4(0).Value = 2
args4(1).Name = "SearchItem.CellType"
args4(1).Value = 1
args4(2).Name = "SearchItem.RowDirection"
args4(2).Value = false
args4(3).Name = "SearchItem.AllTables"
args4(3).Value = false
args4(4).Name = "SearchItem.Backward"
args4(4).Value = false
args4(5).Name = "SearchItem.Pattern"
args4(5).Value = false
args4(6).Name = "SearchItem.Content"
args4(6).Value = false
args4(7).Name = "SearchItem.AsianOptions"
args4(7).Value = false
args4(8).Name = "SearchItem.AlgorithmType"
args4(8).Value = 0
args4(9).Name = "SearchItem.SearchFlags"
args4(9).Value = 65536
args4(10).Name = "SearchItem.SearchString"
args4(10).Value = "Ergebnis"
args4(11).Name = "SearchItem.ReplaceString"
args4(11).Value = ""
args4(12).Name = "SearchItem.Locale"
args4(12).Value = 255
args4(13).Name = "SearchItem.ChangedChars"
args4(13).Value = 2
args4(14).Name = "SearchItem.DeletedChars"
args4(14).Value = 2
args4(15).Name = "SearchItem.InsertedChars"
args4(15).Value = 2
args4(16).Name = "SearchItem.TransliterateFlags"
args4(16).Value = 1024
args4(17).Name = "SearchItem.Command"
args4(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args4())


end sub

Vielen lieben Dank an Karolus, für die tolle Hilfestellung.
Zuletzt geändert von MikeRo am Di, 09.11.2010 16:46, insgesamt 7-mal geändert.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von Karolus »

Hallo
Um gleich mal anzuwenden was ich von Dpunch hier gelernt habe ( @Dpunch: Danke, "for each" kannte ich bisher in oObasic nicht. )

Code: Alles auswählen

Sub zeileneinfuegen_ueber_Gesamtergebnis

oDoc = thisComponent
oSheet = oDoc.Sheets(0)
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "A1:A1000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
   For each cell in oResult
     orows.insertbyindex( cell.celladdress.row , 2 )
   Next cell
End If
end sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von MikeRo »

Karolus hat geschrieben:Hallo
Um gleich mal anzuwenden was ich von Dpunch hier gelernt habe ( @Dpunch: Danke, "for each" kannte ich bisher in oObasic nicht. )

Code: Alles auswählen

Sub zeileneinfuegen_ueber_Gesamtergebnis

oDoc = thisComponent
oSheet = oDoc.Sheets(0)
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "A1:A1000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
   For each cell in oResult
     orows.insertbyindex( cell.celladdress.row , 2 )
   Next cell
End If
end sub
Gruß Karo
Super Danke :) Ein kleines Problem gibt es noch, er übernimmt für die neuen Zeilen die Formatierung der Ergebnisse (Grün und umrandet) Er soll aber, für die neuen Zeilen die Standard Formatierung nehmen.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von Karolus »

Hallo
Füge innerhalb des For...next Blocks als 2te Zeile hinzu:

Code: Alles auswählen

osheet.getcellrangebyposition( 0 , cell.celladdress.row -2 , 99 , cell.celladdress.row -1).cellstyle = "Standard"
edit: ohne den Zeilenumbruch alles in einer Zeile
noch ein edit: Codezeile geändert (Zeilenindex richtiggestellt ).
Gruß Karo
Zuletzt geändert von Karolus am Mo, 18.10.2010 15:24, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von MikeRo »

Karolus hat geschrieben:Hallo
Füge innerhalb des For...next Blocks als 2te Zeile hinzu:

Code: Alles auswählen

osheet.getcellrangebyposition( 0 , cell.celladdress.row , 99 , cell.celladdress.row +1).cellstyle = "Standard"
edit: ohne den Zeilenumbruch alles in einer Zeile
Gruß Karo
Es geht noch nicht ganz.
Sub Main

End Sub

Sub zeileneinfuegen_ueber_Gesamtergebnis

oDoc = thisComponent
oSheet = oDoc.Sheets(0)
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "E1:E60000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
For each cell in oResult
orows.insertbyindex( cell.celladdress.row , 2 )
osheet.getcellrangebyposition( 0 , cell.celladdress.row , 99 , cell.celladdress.row +1).cellstyle = "Standard"
Next cell
End If
end sub
So sieht es nun aus. Aber Er macht jetzt die Zelle mit de Gesamtergebnis ins Standardformat, nicht die beiden kompletten neuen Zeilen darüber.

Und noch eine kleine Frage, kann man auch einstellen, das das Makro automatisch ausgeführt wird, wenn die Teilergebnisse erzeugt wurden? Irgendwie kann ich das nicht zuordnen.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von Karolus »

Hallo
Ich hab gerade oben die Codezeile richtiggestellt, ändere deine Zeile entsprechend ab.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit bestimmten Wert, Leerzeile darüber einfügen?

Beitrag von MikeRo »

Perfekt, tausend Dank für deine Hilfe!! :)

Ich packe die Lösung mal in den ersten Beitrag!

Hast du vielleicht noch eine Idee, wie ich es automatisch starten lassen kann? Und zwar nur einmalig? Denn das die Teilergebnisse werden nur einmal erzeugt, aber das Dokument öfter geändert oder gespeichert, so würde er das immer wieder ausführen und immer mehr Leerzeilen machen.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: [Gelöst]Zelle mit best. Wert, Leerzeile darüber einfügen?

Beitrag von MikeRo »

Ich habe eine Idee wegen dem einmaliges ausführen Problem.

Kann man vielleicht einstellen, das wenn das Makro gestartet wurde, irgendwo in einer nicht benutzten Zelle eine 1 hinterlegt wird und wenn es dann wieder gestartet wird und in dieser Zelle eine 1 ist, das Makro nicht mehr ausgeführt wird?

Denn dann kann man es so einstellen, dass es nach Änderung des Dokuments startet, aber dann nicht immer wieder ausgeführt wird, weil nach dem ersten mal eine 1 in der Zelle ist.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: [Gelöst]Zelle mit best. Wert, Leerzeile darüber einfügen?

Beitrag von Karolus »

Hallo
Evtl. reicht eine Prüfung ob die Zelle 2 Zeilen über dem ersten "Gesamtergebnis" bereits leer ist und das Makro ohne weitere Aktionen beendet ?
Etwa so:

Code: Alles auswählen

Sub zeileneinfuegen_auf_allen_Blaettern

oDoc = thisComponent
for i = 0 to odoc.sheets().count() -1
    oSheet = oDoc.Sheets( i )
    orows = osheet.getrows
    oRange = oSheet.getCellRangeByName("E1:E60000")
    oSearchDesc = oSheet.createSearchDescriptor
    oSearchDesc.SearchString = "Gesamtergebnis"
    oSearchDesc.searchWords = True
    oResult = oRange.findAll(oSearchDesc)
    If NOT isNull(oResult) Then
            For Each cell in oResult
                    r = cell.celladdress.row
                    if osheet.getcellbyposition(5 , r-2).string = "" then
                            exit sub
                    else
                            orows.insertbyindex( r , 2 )
                            osheet.getcellrangebyposition( 0 , r , 99 , r +1).cellstyle = "Standard"
                    end if
            Next cell
    End If
next i

end sub
Gruß Karo
Zuletzt geändert von Karolus am Fr, 22.10.2010 20:19, insgesamt 2-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: [Gelöst]Zelle mit best. Wert, Leerzeile darüber einfügen?

Beitrag von MikeRo »

Super das funktioniert perfekt! :)

Ich habe noch eine Frage, kann man das Makro in soweit abändern, dass es im gesamten Dokument und allen darin befindlichen Tabellen nach Gesamtergebnis sucht? Denn ich habe ein Dokument und 17 Tabellen und das Makro geht nur in der ersten Tabelle.
Lösung für das Problem, das Ergebnis nicht hinter jedem Teilergebnis steht. Jetzt steht nur noch am Ende Gesamtergebnis.

Code: Alles auswählen

REM  *****  BASIC  *****

Sub Main

REM--------------------------------------------------- Leezeilen einfügen
oDoc = thisComponent
oSheet = oDoc.Sheets(0)
orows = osheet.getrows
oRange = oSheet.getCellRangeByName("E1:E60000")
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull(oResult) Then
   For Each cell in oResult
      r = cell.celladdress.row
      if osheet.getcellbyposition(5 , r-2).string = "" then
         exit sub
      else
         orows.insertbyindex( r , 2 )
         osheet.getcellrangebyposition( 0 , r , 99 , r +1).cellstyle = "Standard"
      end if
   Next cell
End If

rem --------------------------------------------------------suchen und ersetzen
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:TableSelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 1
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = false
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = 65536
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = "Ergebnis"
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(17) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SearchItem.StyleFamily"
args3(0).Value = 2
args3(1).Name = "SearchItem.CellType"
args3(1).Value = 1
args3(2).Name = "SearchItem.RowDirection"
args3(2).Value = false
args3(3).Name = "SearchItem.AllTables"
args3(3).Value = false
args3(4).Name = "SearchItem.Backward"
args3(4).Value = false
args3(5).Name = "SearchItem.Pattern"
args3(5).Value = false
args3(6).Name = "SearchItem.Content"
args3(6).Value = false
args3(7).Name = "SearchItem.AsianOptions"
args3(7).Value = false
args3(8).Name = "SearchItem.AlgorithmType"
args3(8).Value = 0
args3(9).Name = "SearchItem.SearchFlags"
args3(9).Value = 65536
args3(10).Name = "SearchItem.SearchString"
args3(10).Value = "Ergebnis"
args3(11).Name = "SearchItem.ReplaceString"
args3(11).Value = ""
args3(12).Name = "SearchItem.Locale"
args3(12).Value = 255
args3(13).Name = "SearchItem.ChangedChars"
args3(13).Value = 2
args3(14).Name = "SearchItem.DeletedChars"
args3(14).Value = 2
args3(15).Name = "SearchItem.InsertedChars"
args3(15).Value = 2
args3(16).Name = "SearchItem.TransliterateFlags"
args3(16).Value = 1024
args3(17).Name = "SearchItem.Command"
args3(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(17) as new com.sun.star.beans.PropertyValue
args4(0).Name = "SearchItem.StyleFamily"
args4(0).Value = 2
args4(1).Name = "SearchItem.CellType"
args4(1).Value = 1
args4(2).Name = "SearchItem.RowDirection"
args4(2).Value = false
args4(3).Name = "SearchItem.AllTables"
args4(3).Value = false
args4(4).Name = "SearchItem.Backward"
args4(4).Value = false
args4(5).Name = "SearchItem.Pattern"
args4(5).Value = false
args4(6).Name = "SearchItem.Content"
args4(6).Value = false
args4(7).Name = "SearchItem.AsianOptions"
args4(7).Value = false
args4(8).Name = "SearchItem.AlgorithmType"
args4(8).Value = 0
args4(9).Name = "SearchItem.SearchFlags"
args4(9).Value = 65536
args4(10).Name = "SearchItem.SearchString"
args4(10).Value = "Ergebnis"
args4(11).Name = "SearchItem.ReplaceString"
args4(11).Value = ""
args4(12).Name = "SearchItem.Locale"
args4(12).Value = 255
args4(13).Name = "SearchItem.ChangedChars"
args4(13).Value = 2
args4(14).Name = "SearchItem.DeletedChars"
args4(14).Value = 2
args4(15).Name = "SearchItem.InsertedChars"
args4(15).Value = 2
args4(16).Name = "SearchItem.TransliterateFlags"
args4(16).Value = 1024
args4(17).Name = "SearchItem.Command"
args4(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args4())


end sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zelle mit best. Wert, Leerzeile darüber einfügen? Überall

Beitrag von Karolus »

Hallo
Ich hab in der Antwort vom Dienstag eine Schleife über alle Tabellenblaätter eingebaut.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit best. Wert, Leerzeile darüber einfügen? Überall

Beitrag von MikeRo »

Karolus hat geschrieben:Hallo
Ich hab in der Antwort vom Dienstag eine Schleife über alle Tabellenblaätter eingebaut.

Gruß Karo
Sehr nett :) Und das sucht jetzt in jeder Tabelle und jeder Spalte?
Tausend Dank für die Hilfe.

Gruß
Mike
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zelle mit best. Wert, Leerzeile darüber einfügen? Überall

Beitrag von Karolus »

Hallo
Nein, es sucht jetzt nur in jeder Tabelle im Bereich E1:E60000, ich traue dir durchaus zu das du diese Bereichsadresse selbstständig auf deine Bedürfnisse anpassen kannst 8)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit best. Wert, Leerzeile darüber einfügen? Überall

Beitrag von MikeRo »

Karolus hat geschrieben:Hallo
Nein, es sucht jetzt nur in jeder Tabelle im Bereich E1:E60000, ich traue dir durchaus zu das du diese Bereichsadresse selbstständig auf deine Bedürfnisse anpassen kannst 8)

Gruß Karo
Das dürfte ich hin bekommen :)
Denn falls das Gesamtergebnis mal in einer anderen Spalte ist, kann ich das doch einfach in B1:G60000 ändern oder? :D
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zelle mit best. Wert, Leerzeile darüber einfügen? Überall

Beitrag von MikeRo »

Es scheint noch ein Problem zu geben,

Ich habe 17(vielleicht auch bald mehr) Tabellenblätter, wenn ich auf jedem Tabellenblatt Teilergebnisse ausführe, habe ich auf jedem Tabellenblatt mindestens einmal Gesamtergebnis stehen.
Ich habe das Makro dann mal gestartet, aber es bricht nach der ersten Tabelle ab. es macht nicht auf der zweiten Seite weiter, wenn ich dann allerdings das Gesamtergebnis auf der ersten Seite lösche, macht er es doch auf der zweiten.

Code: Alles auswählen

REM--------------------------------------------------- Leezeilen einfügen

oDoc = thisComponent
for i = 0 to odoc.sheets().count() -1
    oSheet = oDoc.Sheets( i )
    orows = osheet.getrows
    oRange = oSheet.getCellRangeByName("A1:K60000")
    oSearchDesc = oSheet.createSearchDescriptor
    oSearchDesc.SearchString = "Gesamtergebnis"
    oSearchDesc.searchWords = True
    oResult = oRange.findAll(oSearchDesc)
    If NOT isNull(oResult) Then
            For Each cell in oResult
                    r = cell.celladdress.row
                    if osheet.getcellbyposition(5 , r-2).string = "" then
                            exit sub
                    else
                            orows.insertbyindex( r , 2 )
                            osheet.getcellrangebyposition( 0 , r , 99 , r +1).cellstyle = "Standard"
                    end if
            Next cell
    End If
next i
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten