Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Moderator: Moderatoren
Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Aloha
Der Titel ist möglicherweise nicht wirklich konkret, aber in Kurzform ist mir einfach nichts besseres eingefallen.
Es geht um folgendes:
Ich habe eine Dokumentvorlage (bzw. mehrere, in verschiedenen Sprachen).
In dieser Vorlage befinden sich Felder (im Moment Seriendruck-Felder), die mit den Eingaben in einem Calc-Sheet gefüllt werden.
Die mit den Eingaben ergänzte Vorlage wird nur einmal benötigt und entsprechend gespeichert und/oder ausgedruckt.
Die Calc-Quelle besteht aus vielen vollkommen identisch aufgebauten Sheets (im Prinzip viele Datenbank-Tabellen, der Tabellenname wäre entsprechend der Name des Sheets), die einfach nur unterschiedliche Datensätze enthalten.
Prinzipiell ein Fall für den Serienbrief mit der Calc-Datei als registrierter Datenquelle.
Aber dabei ergeben sich einige Unannehmlichkeiten:
a) Erstelle ich die Seriendruck-Felder aus einer der vielen (vom Aufbau vollkommen identischen) Tabellen (respektive Sheets), können diese Felder aus anderen Tabellen nicht gefüllt werden.
(sprich: Erstelle ich drei Seriendruck-Felder aus Tabelle A basierend auf den Spalten X, Y und Z, so kann ich die Felder nur aus Tabelle A heraus füllen, nicht aber aus einer anderen x-beliebigen Tabelle mit den theoretisch gleichen Spalten)
b) Schon allein das Öffnen der Calc-Datenquelle über den Datenquellenbrowser dauert Ewigkeiten (gute 1-2 Minuten)
c) Die Möglichkeiten für die Steuerung der Serienbrief-Erstellung per Makros lassen stark zu wünschen übrig
Im Moment muss ich sehr viel mit Workarounds hantieren, um das gewünschte Ergebnis zu erzielen, aber da ich mich mit Office-Anwendungen noch nie wirklich beschäftigt habe (weder MS Office, noch OOo), würde mich brennend interessieren, ob es eine praktikable Alternative zu dem Weg über den Serienbrief gibt.
Ziel letztendlich
-> Eingaben werden in einem Calc-Sheet gemacht
-> diese Eingaben sollen in einer Dokumentvorlage landen
-> das so entstandene Dokument wird gespeichert und/oder gedruckt
Der Titel ist möglicherweise nicht wirklich konkret, aber in Kurzform ist mir einfach nichts besseres eingefallen.
Es geht um folgendes:
Ich habe eine Dokumentvorlage (bzw. mehrere, in verschiedenen Sprachen).
In dieser Vorlage befinden sich Felder (im Moment Seriendruck-Felder), die mit den Eingaben in einem Calc-Sheet gefüllt werden.
Die mit den Eingaben ergänzte Vorlage wird nur einmal benötigt und entsprechend gespeichert und/oder ausgedruckt.
Die Calc-Quelle besteht aus vielen vollkommen identisch aufgebauten Sheets (im Prinzip viele Datenbank-Tabellen, der Tabellenname wäre entsprechend der Name des Sheets), die einfach nur unterschiedliche Datensätze enthalten.
Prinzipiell ein Fall für den Serienbrief mit der Calc-Datei als registrierter Datenquelle.
Aber dabei ergeben sich einige Unannehmlichkeiten:
a) Erstelle ich die Seriendruck-Felder aus einer der vielen (vom Aufbau vollkommen identischen) Tabellen (respektive Sheets), können diese Felder aus anderen Tabellen nicht gefüllt werden.
(sprich: Erstelle ich drei Seriendruck-Felder aus Tabelle A basierend auf den Spalten X, Y und Z, so kann ich die Felder nur aus Tabelle A heraus füllen, nicht aber aus einer anderen x-beliebigen Tabelle mit den theoretisch gleichen Spalten)
b) Schon allein das Öffnen der Calc-Datenquelle über den Datenquellenbrowser dauert Ewigkeiten (gute 1-2 Minuten)
c) Die Möglichkeiten für die Steuerung der Serienbrief-Erstellung per Makros lassen stark zu wünschen übrig
Im Moment muss ich sehr viel mit Workarounds hantieren, um das gewünschte Ergebnis zu erzielen, aber da ich mich mit Office-Anwendungen noch nie wirklich beschäftigt habe (weder MS Office, noch OOo), würde mich brennend interessieren, ob es eine praktikable Alternative zu dem Weg über den Serienbrief gibt.
Ziel letztendlich
-> Eingaben werden in einem Calc-Sheet gemacht
-> diese Eingaben sollen in einer Dokumentvorlage landen
-> das so entstandene Dokument wird gespeichert und/oder gedruckt
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Hallo,
Dein Vorgehen ist schon das einzig richtige, das sehe ich auch so.
zu a:
über 'Bearbeiten ... Datenquelle wechseln' lässt sich das schnell lösen.
zu b:
da hast du recht.
-------------
Die einzige Alternative die ich sehe, wäre eine Datenbankanwendung zu programmieren (z.B. Access)
vermutlich auch base, aber da habe ich keine Erfahrunng.
-------------
Mir fällt gerade noch etwas ein, das gehen könnte: die Funktion sverweis
Dein Vorgehen ist schon das einzig richtige, das sehe ich auch so.
zu a:
über 'Bearbeiten ... Datenquelle wechseln' lässt sich das schnell lösen.
zu b:
da hast du recht.
-------------
Die einzige Alternative die ich sehe, wäre eine Datenbankanwendung zu programmieren (z.B. Access)
vermutlich auch base, aber da habe ich keine Erfahrunng.
-------------
Mir fällt gerade noch etwas ein, das gehen könnte: die Funktion sverweis
Viele Grüße,
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Aloha
Bearbeiten ... Datenquelle ist schonmal 'nen guter Tipp, da das ganze aber ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Prinzipiell wollte ich gerne komplett von der in OpenOffice leider sehr düftigen Serienbrief-Schiene weg, aber ich hab schon befürchtet, dass das nicht wirklich machbar ist.
Bearbeiten ... Datenquelle ist schonmal 'nen guter Tipp, da das ganze aber ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Prinzipiell wollte ich gerne komplett von der in OpenOffice leider sehr düftigen Serienbrief-Schiene weg, aber ich hab schon befürchtet, dass das nicht wirklich machbar ist.
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Es ist sicher umsetzbar.ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Auch das sehe ich nicht so.Prinzipiell wollte ich gerne komplett von der in OpenOffice leider sehr düftigen Serienbrief-Schiene weg, aber ich hab schon befürchtet, dass das nicht wirklich machbar ist.
Die Serienbrieffunktion ist in OOo nach meinem Dafürhalten deutlich besser gelöst als in Word2003 (neuere kann ich nicht beurteilen) - angefangen damit, dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern.
Viele Grüße,
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
und was konkret? Mir ist pauschal nichts bekannt was fehlen würde.c) Die Möglichkeiten für die Steuerung der Serienbrief-Erstellung per Makros lassen stark zu wünschen übrig
WElche workarounds verwendest Du?Im Moment muss ich sehr viel mit Workarounds hantieren
das was Du hier beschreibst funktioniert mittels DDE-Verknüpfung:Ziel letztendlich
-> Eingaben werden in einem Calc-Sheet gemacht
-> diese Eingaben sollen in einer Dokumentvorlage landen
-> das so entstandene Dokument wird gespeichert und/oder gedruckt
füge in ein Writer-Dokument entsprechende Feldbefehle (DDE-Feld) mittels Einfügen-Feldbefehle-Variablen-DDE-Feld ein, die zu den gewünschten Calc-Zellen verknüpft sind und eine Eingabe in die Calczellen wird dann im Writerdokument wiedergegeben. Die DDE-Anweisung:
soffice D:\abc.ods Daten.D14
verknüpft zum Beispiel die Zelle D14 des Blattes "Daten" der Datei "abc.ods".
Inwiefern? Mit z.B. Makros kannst Du wohl jegliche Anforderung umsetzen, ich wüßte nicht was da nicht möglich sein sollte.aber ich hab schon befürchtet, dass das nicht wirklich machbar ist
Ich bin nicht der Meinung das irgendetwas an der OOo-Serienbrieffunktion besser als in MS Word wäre.Die Serienbrieffunktion ist in OOo nach meinem Dafürhalten deutlich besser gelöst als in Word2003 (neuere kann ich nicht beurteilen) - angefangen damit, dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern.
Im Konkreten verstehe ich Deine Aussagen auch nicht, denn alles was Du hie aufführst (dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern) geht meines wissens auch in MS Word.
Gruß
Stephan
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Zugegeben, meine Aussage ist zu final, als dass sie so stimmen könnte.taraxacum hat geschrieben:Es ist sicher umsetzbar.ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Ich könnte zwar jedem einzelnen Seriendruckfeld manuell eine andere Tabelle zuweisen, aber bei gut 300 Feldern ist das insofern nicht "umsetzbar", als dass es doch recht lange dauert.
Eine andere Möglichkeit habe ich weder irgendwo gesehen noch selber gefunden.
Um Missverständnisse von Anfang an aus dem Weg zu räumen:Stephan hat geschrieben:und was konkret? Mir ist pauschal nichts bekannt was fehlen würde.
Der MailMerge Service an sich funktioniert soweit wunderbar, aber der lässt für meine Ziele leider nicht immer konsequent nutzen.
Teilweise muss das aus einer Vorlage erstellte Dokument noch um sehr spezielle Dinge erweitert werden, die von ihrer Natur her nicht automatisierbar sind, bzw an manchen Stellen vor dem Eintragen der Daten aus der Datenquelle auch geändert werden.
Daher muss ich hin und wieder mit dem Datenquellenbrowser hantieren, und da stosse ich immer wieder an Grenzen.
Das fängt schon beim einfachen Selektieren eines Datensatzes (nicht Zeiger drauf setzen, sondern wirklich selektieren) und dem Auslösen der "Daten in Felder" Funktion an.
Ich habe mich tagelang mit diesen Problemen beschäftigt, ohne eine Lösung zu finden. Genau diese Frage taucht übrigens unbeantwortet auch im englischen Forum auf.
Nun, z.B. muss ich den auch hier im Forum schon geposteten Umweg über Feldnamen <-> Spaltennamen machen, um die Daten aufs Blatt zu kriegen.WElche workarounds verwendest Du?
(Davor habe ich das ganze mit Benutzerfeldern gemacht, die ich einfach mit den Zellinhalten gefüllt habe, aber das dauert noch länger als die jetzige Serienbrief-Lösung).
Sollte es machbar sein, die Datenquelle der Felder als Ganzes ändern zu können, wäre das schonmal ein guter erster Schritt.
Zudem hantiere ich im Moment mit einer MySQL-Zwischenlagerungstabelle, damit der Verbindungsaufbau beim Öffnen des Datenquellenbrowsers nicht so unerträglich lange dauert.
Dies ist aber ausdrücklich nicht erwünscht und soll, so irgendwie möglich, geändert werden.
Wie auch oben schon gesagt: ich habe mich etwas zu final und eigentlich auch falsch ausgedrückt, denn nicht die Machbarkeit an sich ist das Problem, sondern die Geschwindigkeit.Inwiefern? Mit z.B. Makros kannst Du wohl jegliche Anforderung umsetzen, ich wüßte nicht was da nicht möglich sein sollte.
Wenn das Prokekt abgeschlossen ist, müssen unter Umständen täglich große Mengen dieser Dokumente erzeugt werden, da versucht man natürlich um jede Sekunde zu kämpfen.
Die Serienbrief-Variante ist z.B. schon deutlich schneller als die Variante mit Benutzerfeldern, am schnellsten ging es bis jetzt jedoch mit der integrierten Funktion "Daten in Felder".
Die DDE-Felder sehen auf den ersten Blick auf jeden Fall sehr interessant aus, das werde ich am Montag direkt mal testen.
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
nenne ein paar Beispiele dafür - Was ist seiner Natur nach nicht automatisierbar?Teilweise muss das aus einer Vorlage erstellte Dokument noch um sehr spezielle Dinge erweitert werden, die von ihrer Natur her nicht automatisierbar sind
weiß ich nicht was das inhaltlich meintbzw an manchen Stellen vor dem Eintragen der Daten aus der Datenquelle auch geändert werden.
Das verstehe ich nicht, es ging hier um Makroprogrammieung und da muß man garnicht mit diesem Browser arbeiten, dann wärs ja auch irgendwie keine Programmierung, denn der Browser ist lediglich ein TEil der OOo-GUIDaher muss ich hin und wieder mit dem Datenquellenbrowser hantieren, und da stosse ich immer wieder an Grenzen.
Du schlägst doch wohl aber nicht vor Serienbriefe per Makro zu programmieren indem Du über den DAtenbrowser rumfrickelst?Das fängt schon beim einfachen Selektieren eines Datensatzes (nicht Zeiger drauf setzen, sondern wirklich selektieren) und dem Auslösen der "Daten in Felder" Funktion an.
Wenn Du mittels Makroprogrammierung auf Datensätze zugreifen willst tue das direkt und nicht auf dem Umweg über die GUI von OOo. z.B. das bekannte Base-Dokument von Pitoniak dürfte dafür einen Einstieg liefern:Ich habe mich tagelang mit diesen Problemen beschäftigt, ohne eine Lösung zu finden.
http://www.pitonyak.org/database/
jaWie auch oben schon gesagt: ich habe mich etwas zu final und eigentlich auch falsch ausgedrückt
.Wenn das Prokekt abgeschlossen ist, müssen unter Umständen täglich große Mengen dieser Dokumente erzeugt werden, da versucht man natürlich um jede Sekunde zu kämpfen
Dann verstehe ich nicht warum Du Basic als Programmiersprache einsetzt, denn das ist ja nunmal ohnehin langsam
Keine Ahnung was das sagen soll. Keine dieser Dinge hast Du hier konkret vorgestellt, so das man schwerlich was dazu sagen kann.Die Serienbrief-Variante ist z.B. schon deutlich schneller als die Variante mit Benutzerfeldern, am schnellsten ging es bis jetzt jedoch mit der integrierten Funktion "Daten in Felder".
Gruß
Stephan
Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief
Dinge, die sich nicht oder nur sehr selten wiederholen.Stephan hat geschrieben:nenne ein paar Beispiele dafür - Was ist seiner Natur nach nicht automatisierbar?
Das kann eine bestimmte Formulierung sein, dass kann eine nur diesem Brief anhaftende Telefonnummer sein, die sich von der "normalen" Telefonnummer unterscheidet, das kann ein anderes Datum sein, als das heutige, das kann ein Absatz sein, der ins Englische / Französische / Bulgarische / Kiswahili / wasauchimmer übersetzt werden muss, das kann eine ganz bestimmte Grafik an einer ganz bestimmten Stelle sein etcetcetc
Manche Datenfelder müssen entfernt werden, weil irrelevant oder unerwünscht und ähnliches (und das Löschen nachdem die Daten übertragen wurden, kann richtige Fummelarbeit werden, da unter Umständen auch Tabellen bzw Tabellen in Tabellen etc eingefügt werden), manche Grafiken sollen nicht in das Dokument embedded werden bzw. überhaupt nicht drin sein etcweiß ich nicht was das inhaltlich meint
Nunja, ursprünglich gings um eine Alternative zum Serienbrief, wie und ob ich das Ganze mithilfe von Makros umsetze, ist dann erst ein Detail.Das verstehe ich nicht, es ging hier um Makroprogrammieung und da muß man garnicht mit diesem Browser arbeiten, dann wärs ja auch irgendwie keine Programmierung, denn der Browser ist lediglich ein TEil der OOo-GUI
Nein, standardmässig tue ich das einfach über den MailMerge Servixe.Du schlägst doch wohl aber nicht vor Serienbriefe per Makro zu programmieren indem Du über den DAtenbrowser rumfrickelst?
Aber um nach individuellen Änderungen in einem Dokument die Felder zu füllen ohne das Dokument zwischenspeichern zu müssen und ohne dass der Anwender noch per Hand die Datenquelle, den Datensatz etc auswählen muss, ist mir bisher nur diese Möglichkeit zu Augen gekommen.
Mit den Pitonyak-Sachen bin ich durchaus vertraut.Wenn Du mittels Makroprogrammierung auf Datensätze zugreifen willst tue das direkt und nicht auf dem Umweg über die GUI von OOo. z.B. das bekannte Base-Dokument von Pitoniak dürfte dafür einen Einstieg liefern:
Nur leider ist eine echte Datenbank wie schon erwähnt nach momentaner Sachlage nicht gewünscht und eine als Datenbank angebundene Calc-Datei benötigt so oder so Ewigkeiten, bis sie ansprechbar ist (zumindest in dieser Größe).
Und benutze ich nicht die Seriendruckfelder aus einer registrierten Datenbank, ergibt sich wieder das Problem, wie ich die Daten sinnvoll übertragen kann.
Das ist nicht meine Wahl (ganz im Gegenteil), sondern Vorgabe - das Firmensystem soll inklusive bisher vorhandener Makros von Windows / MS Office zu Linux / OOo migriert werden, und zwar nach Möglichkeit ohne dass im Betrieb zusätzlich Applikationen benötigt werden.Dann verstehe ich nicht warum Du Basic als Programmiersprache einsetzt, denn das ist ja nunmal ohnehin langsam
Benutzerfelder:Keine Ahnung was das sagen soll. Keine dieser Dinge hast Du hier konkret vorgestellt, so das man schwerlich was dazu sagen kann.
Benannte Benutzerfelder ins Writer-Dokument einfügen.
Diese der Reihe nach ansprechen und mit den Eingaben im Calc-Sheets füllen.
Code: Alles auswählen
oTextFieldMasters = oDoc.TextFieldMasters
sTarget = "com.sun.star.text.FieldMaster.User.fHandelsname"
sFieldContent = oCell(fn_getColumn("Handelname"),nRow).String
oTextFieldMasters.getByName(sTarget).Content = fn_getPhrases(sFieldContent)
Seriendruckfelder ins Writer-Dokument einfügen.
Diese wiederum der Reihe nach ansprechen und mit den Eingaben füllen.
Code: Alles auswählen
If oDatabaseRow.Columns.hasByName(fieldName) Then
sCurrentField = DatabaseRow.Columns.getByName(fieldName).String
If Len(sCurrentField) > 0 AND Instr(sCurrentField,"@") > 0 Then sCurrentField = fn_getPhrases(sCurrentField)
thisField.CurrentPresentation = sCurrentField
End If
GUI-Funktion "Daten in Felder" auslösen.
Von oben nach unten ist bei diesen Varianten auf den getesteten Rechnern jeweils ein Geschwindigkeitszuwachs zu merken.
Leider funktioniert die unterste Variante aus oben genannten Gründen (bis jetzt) ohne manuelles Umstellen der Datenbankanbindungen(oder eher Tabellenanbindungen) aller Felder eben nur für die Tabelle, die zum Verknüpfen benutzt wurde, bzw. das auch nur manuell, da eben die Funktionalität zum Selektieren eines Datensatzes und Auslösen der "Daten in Felder" fehlt, bzw. ich noch keine funktionierende Version gesehen habe.
Wenn ich hier irgendwo auf dem Schlauch stehe, bin ich für jeden Schubser dankbar, aber bis jetzt hat sich mir für diese bestimmten Zwecke noch keine gute Idee ergeben, zumal die Dokumentvorlagen auch nach meiner Zeit im Betrieb von "Unwissenden" erweiterbar sein sollten (wie es z.B. mit dem einfachen Einfügen eines neuen Seriendruckfeldes der Fall wäre).