Seite 1 von 1

Seriendruck mit bedingt markierten Zellen

Verfasst: Mi, 08.05.2013 15:40
von AA62
Hallo,

ich stehe gerade vor einem Problem, bei dem ich leider keinen Lösungsansatz habe!
Gegeben: Dienstplan als Tabelle. Der Dienstplan enthält alle Dienstzeiten für alle Personen auf einen Blick.
Dieser Plan soll nun für alle KollegInnen ausgedruckt werden, und zwar so, dass bei jedem Ausdruck für die entsprechende Person genau ihr Name hervorgehoben ist (z. B. durch eine Hintergrundfarbe der Zelle). Das würde das lästige Suchen und Markieren des eigenen Namens ersetzen.
Doch ... wie? Ich dachte irgendwie an eine Seriendruckfunktion mit bedingter Formatierung, kann aber nichts finden.

Hat jemand eine Idee??

Vielen Dank im Voraus!

Re: Seriendruck mit bedingt markierten Zellen

Verfasst: Fr, 10.05.2013 15:22
von F3K Total
Hallo,
dass es eine Funktion dafür gibt, wäre mir neu, aber mit einem kurzen Makro ist das kein Problem, siehe auch Beispieldatei unten:

Code: Alles auswählen

Sub s_Print
    dim printprops()
    odoc = thiscomponent
    osheet = odoc.sheets.getbyname("Tabelle1")
    oRange = osheet.getcellrangebyname("A2:AF9") 'Bereich in dem die Farbe geändert werden soll, es wird die Hintergrundfarbe der obersten Zeile verwendet.
    ncolor = oRange.getcellbyposition(0,0).cellbackcolor
    ncolumns = oRange.columns.count -1
    nrows = oRange.rows.count -1
    for i = 0 to nrows
        oRangecurrentPerson = orange.getcellrangebyposition(0,i,ncolumns,i)
        oRangecurrentPerson.cellbackcolor = ncolor
        odoc.print(printprops())
        wait 200
        oRangecurrentPerson.cellbackcolor = -1
    next i
    oRangecurrentPerson = orange.getcellrangebyposition(0,0,ncolumns,0)
    oRangecurrentPerson.cellbackcolor = ncolor 'Farbe wieder in die erste Zeile
End Sub
In der Beispieldatei einmal auf den Knopf drücken.

Viel Erfolg, Gruß R

Re: Seriendruck mit bedingt markierten Zellen

Verfasst: Fr, 10.05.2013 22:03
von AA62
Hallo R,

danke für diese qualifizierte Antwort! Da tun sich Möglichkeiten auf ... allerdings bin ich mit Makroprogrammierung noch nicht vertraut.
Das Makro funktioniert hervorragend, aber ich habe ein paar Fragen:
Wo wird denn festgelegt, dass der Button in der Tabelle erscheint (ich möchte ihn dort raushaben und habe ihn mir in die Menüleiste gepackt)?
Kann man den Druck dunkel prozessieren? Sicher wird man das können, aber mir ist gar nicht klar, wo man diesen Eigenschaft (Dialog/dunkel) überhaupt angibt.

Als "Programm-Makro-Anfänger" habe ich noch die Bitte: Kannst Du mal die Beispieldatei anschauen, die erklärt die Anforderung etwas besser als ich es offensichtlich im Text gemacht habe. In den Zellen stehen die Namen der Diensthabenden (in der Realität natürlich eine wesentlich größere Tabelle!) und diese Zellen sollen jeweils für den Druck-Adressaten markiert werden.

Der Programmiersprung vom vorgeschlagenen Makro zum dem, das ich konkret brauche, ist mir noch etwas zu hoch ...

Vielen Dank!

Re: Seriendruck mit bedingt markierten Zellen

Verfasst: Fr, 10.05.2013 22:40
von F3K Total
So,
habe mir die Mühe gemacht:

Code: Alles auswählen

Sub s_Print
    dim printprops()
    odoc = thiscomponent
    odoc.lockcontrollers
    osheet = odoc.sheets.getbyname("Tabelle1")
    oRangePlan = osheet.getcellrangebyname("B3:E6") 'Bereich in dem die Farbe geändert werden soll.
    oRangePersonen = osheet.getcellrangebyname("F3:F10") 'Bereich in dem alle Personen eingetragen sind, es wird die Hintergrundfarbe der obersten Zeile verwendet.
    ncolor = oRangePersonen.getcellbyposition(0,0).cellbackcolor
    ncolumns = oRangePlan.columns.count -1
    nrows = oRangePlan.rows.count -1
    nPersons = oRangePersonen.rows.count
    for h = 0 to nPersons -1
        sName = oRangePersonen.getcellbyposition(0,h).string
        for i = 0 to ncolumns
            for k = 0 to nrows
                ocurrentCell = oRangePlan.getcellbyposition(i,k)
                if ocurrentCell.string = sName then ocurrentCell.cellbackcolor = ncolor
            next k
        next i
        odoc.print(printprops())
        wait 200
        oRangePlan.cellbackcolor = -1
    next h
    odoc.unlockcontrollers
    msgbox ("Es wurden "+nPersons +" Pläne zum Drucker geschickt",64,"Fertig")
End Sub
Es müssen nur noch die beiden Bereiche angepasst werden.
Denke beim Originaldokument daran den Druckbereich richtig zu setzen.
Es gibt auch ein neues Menü "Druckmakro".
Gruß R

Re: Seriendruck mit bedingt markierten Zellen

Verfasst: Mo, 13.05.2013 17:18
von AA62
Hallo R,

Du hast Dir wirklich Mühe gemacht - und das Makro tut genau, was es soll!

Vielen Dank!