Seite 1 von 2

Automatischer Seitenumbruch / automatische Tabellenblätter

Verfasst: Do 19. Mär 2015, 09:56
von dreckfrosch
Hallo liebe Libre-Office-Gemeinde,

ich habe folgendes Problem:

In einer Tabelle enthält eine Spalte viele verschiedene E-Mail Adressen. Die einzelnen Adressen tauchen teilweise einzeln oder auch mehrfach auf. Die Tabelle ist alphabetisch nach den E-Mail-Adressen sortiert
Beispiel:

franz@email.de
franz@email.de
hanswurst@xyz.com
klaus@abc.de
karl@123.de
karl@123.de
karl@123.de

Nun muss ich die Tabellen so ausdrucken, dass auf einem Ausdruck immer nur die Einträge zu sehen sind, die einer e-Mail-Adresse zuzuordnen sind.
Wie kann ich also entweder automatisch immer dann einen Seitenumbruch einrichten, wenn die E-Mail-Adresse sich ändert, oder wie kann ich aus den einzelnen E-Mail-Adressen jeweils neue Tabellenblätter generieren, die ich dann schnell hintereinander ausdrucken kann?

Um beim obigen Beispiel zu bleiben:

franz@email.de
franz@email.de
_______________________
hanswurst@xyz.com
_______________________
klaus@abc.de
_______________________
karl@123.de
karl@123.de
karl@123.de
_______________________

Das ganze händisch zu machen ist aufgrund der Datenmenge undenkbar.

Vielen Dank für Eure Unterstüzung!

Der Dreckfrosch

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 12:05
von miesepeter
Workaround:
SUCHEN/ERSETZEN @ durch @_ (_ = Leerzeichen)
Menü Daten > Text in Spalten (Trenner Leerzeichen)
Dann sortieren oder filtern...

Wenn sonst nichts geht, wäre das eine manuelle Alternative...
Ciao

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 12:34
von dreckfrosch
Vielen Dank, ich habe Deine Schritte grundsätzlich verstanden, komme aber nicht zum gewünschten Ergebnis. Mit dieser Methode trenne ich ja nur alles ab, was hinter dem @ steht. Dennoch bleiben alle Einträge untereinander sortiert in einem Tabellenblatt...oder verstehe ich das irgendwie falsch?

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 13:09
von karolus
Hallo

@miesepeter : #####frosch möchte manuelle Zeilenumbrüche wenn die Mail-adresse wechselt.

Code: Alles auswählen

Sub Main
doc = ThisComponent
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
rows = sheet.Rows
c = 0  'index Spalte A -- Bitte Anpassen'
r = 0
firstentry = sheet.getCellByPosition(c, r).String
do
    r = r+1
    nextentry = sheet.getCellByPosition(c, r).String
    
    if nextentry <> firstentry then   'first →→ firstentry'
        rows.getByIndex(r).IsManualPageBreak = True
    End If
    firstentry = nextentry
Loop until nextentry = ""
End Sub
Edit: Fehler in Zeile 13 berichtigt

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 13:15
von dreckfrosch
Super der Code scheint zu funktionieren. Die Spalte mit den E-Mail-Adressen ist Spalte L, wie ist das dann genau einzutragen. Ich kenne mich mit Makros leider überhaupt nicht aus. Ich habe ihn zwar ausführen können, aber nun ist hinter jeder E-Mail Adresse ein Seitenumbruch. Es wird also nicht erkannt, wenn die Adressem gleich lauten.

Wahrscheinlich hab ich das mit der Spalte L falsch eingegeben...

Code: Alles auswählen

    Sub Main
    doc = ThisComponent
    sel = doc.CurrentSelection
    sheet = sel.Spreadsheet
    rows = sheet.Rows
    c = 0  'index Spalte L'
    r = 0
    firstentry = sheet.getCellByPosition(c, r).String
    do
        r = r+1
        nextentry = sheet.getCellByPosition(c, r).String
        
        if nextentry <> first then
            rows.getByIndex(r).IsManualPageBreak = True
        End If
        firstentry = nextentry
    Loop until nextentry = ""
    End Sub

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 13:22
von karolus
Hallo

Ich habs ungenau beschrieben -- ja du möchtest Seitenumbrüche zwischen den Zeilen bei denen der Inhalt wechselt.
edit.
du hast den Kommentar geändert aber nicht den Index

Code: Alles auswählen

c = 11 'das ist der Index von Spalte L
edit_ende
Karolus

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 13:31
von dreckfrosch
...mmh...

es bleibt bei Umbrüchen nach jeder einzelen E-Mail-Adresse...

Code: Alles auswählen

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

    Sub Main
    doc = ThisComponent
    sel = doc.CurrentSelection
    sheet = sel.Spreadsheet
    rows = sheet.Rows
    c = 11
    r = 0
    firstentry = sheet.getCellByPosition(c, r).String
    do
        r = r+1
        nextentry = sheet.getCellByPosition(c, r).String
        
        if nextentry <> first then
            rows.getByIndex(r).IsManualPageBreak = True
        End If
        firstentry = nextentry
    Loop until nextentry = ""
    End Sub

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 13:43
von karolus
Hallo

Ja - du musst die Dinger erst wieder wegbekommen.

Code: Alles auswählen

Sub setback
doc = ThisComponent
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
sheet.Rows.IsManualPageBreak = False
End Sub

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 14:13
von karolus
Hach - immer diese blöden Fehler in Basic - update:

Code: Alles auswählen

Sub Main
doc = ThisComponent
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
rows = sheet.Rows
c = 11  'index Spalte L -- Bitte Anpassen
r = 0
f_irst = sheet.getCellByPosition(c, r).String
do
    r = r+1
    n_ext = sheet.getCellByPosition(c, r).String
    
    if n_ext <> f_irst then
        rows.getByIndex(r).IsManualPageBreak = 1
    Else 
         rows.getByIndex(r).IsManualPageBreak = 0
    End If
    f_irst = n_ext
Loop until n_ext = ""
End Sub

Re: Automatischer Seitenumbruch / automatische Tabellenblätt

Verfasst: Do 19. Mär 2015, 14:48
von dreckfrosch
Ohne Scheiß---TOTAL GEIL! Vielen Dank und sorry für den unflätigen Ton, aber das musste mal sein!

Haut hin!!! DAAAAANKE!!!! :D

Fällt Dir jetzt noch irgendwas cooles ein, damit er auch auf jeder Seite die Tabellenüberschrift übernimmt??? Wäre nur ein Schmankerl und nicht so schlimm, wenn's nicht geht oder total kompliziert ist!