![]() |
Serienbrief einzeln speichern mit individuellem Dateinamen
Hallo zusammen.
Ich möchte mit Delphi ein Seriendruckdokument in einzelne Seiten abspeichern. Dabei möchte ich die Dateinamen der einzelnen Dokumente nach dem Datenfeld "NAME" bennennen. Hier liegt mein Problem. Ich weiß nicht, wie ich an den Inhalt des jeweils aktiven Records komme um in als String und später als Dateiname zu verwenden. Hat jemand eine Idee? Danke. Gruss Mathias |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo und willkommen in der DP :dp:
Deine Informationen sind etwas dürftig... - was ist das für ein Dokument ? - wo holst du die Daten her ? - ein klein wenig Quelltext ? :hi: |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo und danke für das Willkommen!
Ich habe eine Word-Datei, die auf eine Excel-Datei als Datenquelle zugreift. In der Excel-Datei sind Daten Name, Adresse, Email hinterlegt. Nun möchte ich einen Seriendruck starten, allerdings jedes Dokument einzeln abspeichern. Momentan speicher ist die Dateien als Nummern (1..n) ab, würde aber gern einen eindeutigen Bezeichner nutzen.
Delphi-Quellcode:
In VBA-Foren habe ich gelesen, dass man die Funktion: "MailMerge.DataFields" nutzen kann, quasi:
WordDocument1.MailMerge.DataSource.ActiveRecord := wdLastRecord;
Amount := WordDocument1.MailMerge.DataSource.ActiveRecord; // for i:= 1 to Amount do begin newfile:=Inttostr(i)+'.doc'; WordDocument1.MailMerge.DataSource.ActiveRecord := i; WordDocument1.SaveAs(newFile);
Delphi-Quellcode:
allerdings funktioniert das nicht:/ Was mache ich falsch?
newfile:=WordDocument1.MailMerge.DataSource.DataFields('NAME').Value;
Gruss Mathias |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo Mathias,
was funktioniert denn da nicht? Auf den ersten Blick sieht das doch ganz gut aus? Gruß K-H |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo!
Delphi-Quellcode:
Oben genanntes Konstrukt lässt sich nicht kompilieren, es kommt die Fehlermeldung:
var newfile:String
... newfile:=WordDocument1.MailMerge.DataSource.DataFields('NAME').Value; "Missing Operator or semicolon" und der Cursor spring direkt hinter .DataFields. Wie würde man denn den Inhalt eines Datenfeldes eines Serienbrief auslesen? Mfg Mathias |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo,
probier mal:
Delphi-Quellcode:
Allerdings nur mal so fix geschossen ;)
var newfile:String
... newfile := WordDocument1.MailMerge.DataSource.DataFields['NAME'].Value; |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo,
Zitat:
"Class does not have a default property" und der Cursor spring wieder hinter .DataFields. Gruss Mathias |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Zitat:
probiers mal mit
Delphi-Quellcode:
das .item ist wichtig, da Du die Serverkpompos verwendest, kannst du Dir leicht mit der Codevervollständigung helfen. Array-Zugriffe laufen meistens iüber die Item-Eigenschaft, es gibt hier keine Default-Eigenschaften.
WordDocument1.MailMerge.DataSource.DataFields.Item('Name').Value;
Gruß Frank |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
Hallo,
Delphi-Quellcode:
Da kommt die Fehlermeldung:
newfile:=WordDocument1.MailMerge.DataSource.DataFields.Item('Name').Value;
"Types of actual and formal var parameters must be identical" und der Cursor spring wieder vor .Value. Muss ich ggf. einen anderen Variablentyp nehmen? Gruss Mathias |
Re: Serienbrief einzeln speichern mit individuellem Dateinam
dann versuche
Delphi-Quellcode:
Var newfile:string;
_name:olevariant; ... _name:='Name'; newfile:=WordDocument1.MailMerge.DataSource.DataFields.Item(_name).Value; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz