SoftMaker.de

Deutschsprachiges Diskussionsforum
Aktuelle Zeit: 24.05.2013 16:12:13

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Sereinbriefe
BeitragVerfasst: 13.12.2011 17:48:51 
Offline

Registriert: 05.11.2011 08:02:54
Beiträge: 13
Wie speichere ich alle Dokumente eines Serienbriefs in einem Dokument, so dass sie (jeweils als einseitiger Brief) dann als aufeinander folgende Seiten des Dokuments auftreten?

Dank im Voraus!!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 13.12.2011 21:33:58 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 05.12.2003 22:47:22
Beiträge: 1490
Wohnort: Solingen
Das geht in TextMaker selbst leider noch nicht. Der Wunsch wurde bereits früher geäußert und in diesem Thread schon einmal eingehend diskutiert.
Im Augenblick kannst du nur einen virtuellen Druckertreiber, z.B. eDocPrintPro, installieren und das Serienbriefdokument darüber ausdrucken lassen. Allerdings erhältst du auf diesem Weg entweder ein PDF-Dokument, das sich nur zur Archivierung eignet, da es sich kaum mehr bearbeiten lässt, oder ein Textdokument, bei dem alle Formatierungen verlorengehen. Ein richtiges TextMaker-Dokument, das sich weiterbearbeiten lässt, kann man derzeit nicht erstellen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 15.12.2011 19:40:51 
Offline
SoftMaker Volunteers
SoftMaker Volunteers
Benutzeravatar

Registriert: 03.10.2007 12:58:39
Beiträge: 1854
Wie Jossi zum Glück sagte: ".... noch nicht." Trotz kontroverser Diskussionen besteht ein wachsender Bedarf. :wink:


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 17.12.2011 00:36:21 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
Vielleicht laesst sich das Problem (zumindest teilweise) mit einem Script erledigen. Ich habe hierzu mal einen kleinen Ansatz entwickelt (mein erster Versuch mit BasicMaker), auf dem Interessierte aufsetzen koennten.

Beim ausprobieren ist mir dann noch ein Fehler in TextMaker aufgefallen:
Wenn man das Script aus BasicMaker heraus startet, werden alle 9 Datensaetze korrekt angezeigt. Ruft man dasselbe Script aus TextMaker auf, werden die Datensaetze 1, 3, 3, 4, 6, 6, 8, 8, 8 ausgegeben und es fehlen die Datensaetze 2, 5, 7 und 9. Vielleicht ein Rundungsproblem, weil TextMaker die Schleifenvariable nicht als Integer behandelt?


Da das Script sich nicht hochladen laesst, hier sein Inhalt:
' Voraussetzung:
' Serienbriefdatei ist aktives Dokument in geoeffnetem TextMaker und bereits mit der Datenbank verbunden
' Die Serienbriefdatei sollte mit einer Leerzeile enden

Dim tm as Object
Dim mergeDocName$, iAnzParagraphs%, iLoopRec%, iFirstLoopRec%, iLastLoopRec%

Set tm = CreateObject("TextMaker.Application")
tm.Application.Visible = True
tm.Application.Activate

' Name der Ergebnisdatei festlegen:
mergeDocName = tm.ActiveDocument.Path & "merged_" & tm.ActiveDocument.Name

' Originalinhalt der Serienbriefdatei in Zwischenablage sichern
tm.ActiveDocument.Select
tm.ActiveDocument.Selection.Copy
iAnzParagraphs = tm.ActiveDocument.Paragraphs.Count

' Schleife ueber die auszugebenden Datensaetze
' hier erstmal nur eine simple Schleife ohne Luecken
iFirstLoopRec = 1
iLastLoopRec = 9
for iLoopRec=iFirstLoopRec to iLastLoopRec
' Ersetzung durchfuehren (deswegen die Sicherung)
tm.ActiveDocument.MergeRecord = iLoopRec
tm.ActiveDocument.MailMerge tmSingleAddress, true
' Vorbereitung fuer naechste Ersetzung (aber nicht beim letzten Datensatz)
if not ( iLoopRec = iLastLoopRec ) then
' Positionierung der Schreibmarke
if ( iLoopRec = iFirstLoopRec ) then
tm.ActiveDocument.Selection.GoTo tmGoToParagraph, tmGoToRelative, iAnzParagraphs+1
else
tm.ActiveDocument.Selection.GoTo tmGoToParagraph, tmGoToRelative, iAnzParagraphs
end if
tm.ActiveDocument.Selection.InsertBreak tmPageBreak
tm.ActiveDocument.Selection.Paste
end if
next iLoopRec

' Ergebnis speichern (Originaldatei soll ja unveraendert bleiben)
' Die Originaldatei ist danach geschlossen
tm.ActiveDocument.SaveAs mergeDocName, tmFormatDocument
set tm = Nothing


Dateianhänge:
Dateikommentar: Serienbriefdatei
mergetest.tmd [22.07 KiB]
12-mal heruntergeladen
Dateikommentar: Datenquelle der Serienbriefdatei
mergetest.csv [185 Bytes]
13-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 17.12.2011 14:52:36 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
Habe das Script jetzt nochmal ein bisschen nachbearbeitet. Leider habe ich nirgends herausgefunden, wie man die Verbindung zur Datenbank per Script loesen kann und wie man die Anzahl der Datensaetze bei dBase-Dateien als Quelle ermittelt.

Das Archiv enthaelt neben dem eigentlichen Script "mergedata.bas" noch eine Beispieldatei "mergetest.tmd" und die zugehoerige Datenquelle "mergetest.csv".

Das Script kann direkt aus TextMaker heraus aufgerufen werden und man wird gefragt, welchen Datenbereich (von ... bis) man zusammenstellen moechte. Leider funktioniert es vorerst nur mit Textdateien (CSV oder TXT) als Datenquelle.


Dateianhänge:
Dateikommentar: enthaelt das Script und eine Beispieldatei mit Datenquelle
Mergescript.zip [4.09 KiB]
12-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 17.12.2011 21:01:13 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
So, das Problem mit der Anzahl Datensaetze bei dBase-Dateien als Datenquelle habe ich geloest (nicht sehr elegant, aber funktioniert).
Nur bei der Trennung des fertigen Dokuments von der Datenquelle komme ich einfach nicht weiter. :cry:


Dateianhänge:
Dateikommentar: Script unterstuetzt jetzt auch dBase-Quellen
mergedata.zip [2.29 KiB]
14-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 18.12.2011 20:35:47 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
Wochenende ist vorbei und daher hier die (vorerst) letzte "finale" Version.

Das Archiv enthaelt das Script "mergedata.bas", einen Beispielserienbrief "mergetest.tmd", sowie die Beispieldatenquellen "mergetest.csv" und "mergetest.dbf" zum testen. Zusaetzlich noch "mergebutton.ico" fuer diejenigen, welche das Script ueber einen benutzerdefinierten Button aus der Symbolleiste starten moechten und ein passendes Symbol suchen.
Dateianhang:
mergebutton.jpg
mergebutton.jpg [ 36.07 KiB | 641-mal betrachtet ]

- Es werden nur "normale" Serienbriefdateien unterstuetzt (normal= alles was mit Strg+A markiert wird). Damit entfallen Konstrukte, welche Textrahmen oder aehnliches verwenden. Einfache Bilder sind aber moeglich (siehe Beispieldatei).
- Als Datenquelle werden Textdateien (CSV/TXT) und dBase-Dateien unterstuetzt.
- Es erfolgt eine Abfrage des auszugebenden Bereiches (Datensatz von ... bis).
- Das Zieldokument erhaelt einen automatisch generierten Namen.
- Das Zieldokument wird durch das Script auch von der Datenquelle getrennt. Diese Trennung von der Datenquelle funktioniert leider NICHT, wenn das Script ueber den Menupunkt "Script starten" aufgerufen wird - es muss entweder direkt ueber BasicMaker oder einen benutzerdefinierten Button (s.o.) gestartet werden. Bei diesem Problem bin ich fuer weitere Loesungsvorschlaege offen (hier waeren auch die Entwickler gefragt :wink: ).

Die Dokumentation im Script sollte ausreichend sein, um entsprechende Erweiterungen, Aenderungen oder Verbesserungen durchfuehren zu koennen.


Dateianhänge:
Dateikommentar: enthaelt Script und Beispieldateien
mergedata.zip [9.72 KiB]
18-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 03.01.2012 14:49:27 
Offline

Registriert: 07.02.2005 11:52:48
Beiträge: 22
hallo c64 und alle anderen,

ich will mir gerade einen serienbrief 'zusammenbauen', und finde keine möglichkeit dort auch bilder mit einzufügen ... wie geht das?

die datenquelle wird eine csv-datei sein, in der in einer spalte die bildernamen enthalten sind. in der hilfe habe ich nichts dazu gefunden.

gruß carsten :o)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 03.01.2012 20:41:45 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
Soweit ich das verstehe, soll folgendes erreicht werden:

Es existiert eine Serienbriefdatei mit normalen Feldern (Adresse, Name usw.), die aus einer Textdatei (CSV) als Datenquelle gefuettert wird. Zusaetzlich soll ein passendes Script den in einem der Datenfelder stehenden Dateinamen (inkl. oder exkl. Pfadangabe?) erkennen, auswerten und das zugehoerige Bild statt des Dateinamens einfuegen.

Wichtig zu wissen waere dabei:
ist in der CSV-Datei nur der Dateiname des Bildes oder der komplette Pfad eingetragen?
Falls der Name ohne Pfad angegeben ist, muessten sich zwangsweise alle Bilder in demselben (fest vorgegebenen) Ordner befinden, um die Dateien finden zu koennen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 04.01.2012 19:31:14 
Offline

Registriert: 07.02.2005 11:52:48
Beiträge: 22
hallo c64,

ja, stimmt alles so wie du schreibst. in der csv-datei ist der vollständige bildname, aber ohne pfadangabe eingetragen. die bilder befinden sich im gleichen ordner mit der csv-datei.

gruß carsten :o)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Serienbriefe
BeitragVerfasst: 04.01.2012 21:50:00 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
So, ich habe mein Script zur Umlenkung des Seriendrucks in eine Datei etwas erweitert. Damit sollte das von dir vorgesehene Szenario funktionieren. Im Anhang befinden sich neben dem eigentlichen Script (mergedata.bas) noch ein Beispielserienbrief (mergetest.tmd) mit Datendatei (mergetest.csv) und den benutzten Bildern (penguin*.jpg).

Bei der Erstellung eines Serienbriefes muessen fuer dieses Script die Namen der Bilder gekapselt werden (siehe auch mein Beispielbrief). Direkt vor dem Datenfeld mit den Bildnamen muss {Bild: und direkt dahinter :Bild} stehen. Das Script sucht nach diesen beiden Marken, um anschliessend diese Markierungen und den Namen dazwischen durch das eigentliche Bild zu ersetzen (sofern die Datei existiert).

Wenn im Bildnamen kein Pfad angegeben ist, wird sowohl im Ordner der Datenquelle, als auch im Ordner des Serienbriefes nach dem zugehoerigen Bild gesucht. Ein Pfad wird angenommen, wenn im Bildnamen ein \ vorkommt.

Es empfiehlt sich, das Script ueber einen benutzerdefinierten Button zu starten. Ein Aufruf ueber den Menupunkt "Script starten" geht nicht, da dabei die SendKeys()-Funktion zur Aufhebung der Verbindung zur Datenquelle leider voellig versagt.

Und nun viel Spass beim testen. :wink:

Nachtrag:
Bei der Gestaltung des Serienbriefes ist darauf zu achten, dass eine Textersetzung innerhalb von Objekten (Text-/Grafikrahmen usw.) nicht moeglich ist.


Dateianhänge:
Dateikommentar: Noch kleine Korrekturen angebracht.
mergedata.zip [5.28 KiB]
16-mal heruntergeladen
Mergedata_mit_Bildnamen.7z [38.58 KiB]
13-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 09.01.2012 10:14:59 
Offline

Registriert: 07.02.2005 11:52:48
Beiträge: 22
hallo c64,

danke für deine anpassungen, doch leider 'funktioniert' der serienbrief bei mir nicht richtig! ich habe deine musterdaten + script unverändert bei mir in TM2012 nach deiner anleitung eingebunden. obwohl ich bei den datensätzen keine einschränkung mache, werden nur 2½ serienbriefe zusammengefügt. die ersten beiden seiten sind textlich richtig erzeugt, beim dritten fehlt der adresskopf, und die sanduhr dreht sich lange, und dann passiert nichts mehr.

nun weiß ich nicht, ob die bilder infolge des offenbar abgebrochenen scripts nicht sichtbar eingefügt werden. in den texten stehen dort nur die platzhalter: 'x{Bild:Penguin2.jpg:Bild}x'

ich betreibe das softmaker-office unter windows 2000 und auf USB-stick. ich weiß das dieses betriebsystem veraltet ist, doch laut schriftlicher auskunft vom softmaker-support ist SM 2012 unter win2k noch voll funktionstüchtig (auch wenn es in der installationasanleitung nicht mehr drin steht!) lediglich für den eM Client wird keine garantie gegeben.

hast du eine idee dazu? kann/soll ich dir meine mergedaten zur ansicht schicken??

danke und gruß carsten :o)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Serienbriefe
BeitragVerfasst: 09.01.2012 20:34:41 
Offline

Registriert: 30.11.2011 07:15:47
Beiträge: 82
Hallo Carsten (uebrigens auch mein Vorname :) ),

die Bildersetzung findet erst statt, wenn alle Datensaetze der normalen Serienbrieffunktion abgearbeitet sind. Daher ist es normal, dass bei Abbruch des Scripts noch die Platzhalter im Text stehen.

Bei der Erstellung des Ergebnisdokuments geht das Script fuer jeden Datensatz so vor, dass zuerst alle Daten im Textmodus aus der Serienbriefdatei in das Zieldokument uebertragen werden und dann die Ersetzung durch die Daten aus der Datenquelle stattfindet. Anschliessend wird derselbe Vorgang im Objektmodus durchgefuehrt. Bei dieser staendigen Umschaltung zwischen Text- und Objektmodus scheint es ab und zu so zu sein, dass sich der OLE-Server dabei aufhaengt. Dies hat nichts mit dem Betriebssystem zu tun - bei mir mit Win7 (64 Bit) tritt dies auch manchmal auf.

Du koenntest mal versuchen, im Script den Wert fuer iSleepEinheit von 50 auf 100 zu erhoehen - vielleicht bringt das etwas (die Verarbeitung dauert dann aber laenger). Zusaetzlich vielleicht auch noch, das Programm nicht vom USB-Stick, sondern von Festplatte zu starten.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sereinbriefe
BeitragVerfasst: 10.01.2012 00:26:57 
Offline

Registriert: 07.02.2005 11:52:48
Beiträge: 22
hallo carsten ;-)

'iSleepEinheit = 100' war der richtige tip! jetzt 'tuckert' das script zwar ganz gemütlich über den bildschirm, aber es funktioniert - vielen dank!

ich werde mich dann die tage mal dran setzen und alles auf meine daten umschreiben. ca. 50 datensätze für den anfang, mit je 4 mittelgroßen bildern ... naja, ich werde zwischendurch 'nen kaffee kochen :o)

vielen dank erstmal, ich melde mich wieder!


gruß carsten :o)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: Lenz und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de