Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Serienbrief einzeln speichern mit individuellem Dateinamen (https://www.delphipraxis.net/148170-serienbrief-einzeln-speichern-mit-individuellem-dateinamen.html)

H.Mathias 24. Feb 2010 06:17


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

haentschman 24. Feb 2010 07:51

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:

H.Mathias 24. Feb 2010 09:08

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:
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);
In VBA-Foren habe ich gelesen, dass man die Funktion: "MailMerge.DataFields" nutzen kann, quasi:
Delphi-Quellcode:
newfile:=WordDocument1.MailMerge.DataSource.DataFields('NAME').Value;
allerdings funktioniert das nicht:/ Was mache ich falsch?

Gruss Mathias

p80286 24. Feb 2010 10:00

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

H.Mathias 24. Feb 2010 11:35

Re: Serienbrief einzeln speichern mit individuellem Dateinam
 
Hallo!

Delphi-Quellcode:
var newfile:String
...
newfile:=WordDocument1.MailMerge.DataSource.DataFields('NAME').Value;
Oben genanntes Konstrukt lässt sich nicht kompilieren, es kommt die Fehlermeldung:
"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

schlecki 24. Feb 2010 11:39

Re: Serienbrief einzeln speichern mit individuellem Dateinam
 
Hallo,

probier mal:

Delphi-Quellcode:
var newfile:String
...
newfile := WordDocument1.MailMerge.DataSource.DataFields['NAME'].Value;
Allerdings nur mal so fix geschossen ;)

H.Mathias 24. Feb 2010 11:51

Re: Serienbrief einzeln speichern mit individuellem Dateinam
 
Hallo,

Zitat:

newfile := WordDocument1.MailMerge.DataSource.DataFields['NAME'].Value;
Da kommt die Fehlermeldung:
"Class does not have a default property" und der Cursor spring wieder hinter .DataFields.

Gruss Mathias

Keldorn 24. Feb 2010 12:00

Re: Serienbrief einzeln speichern mit individuellem Dateinam
 
Zitat:

Zitat von H.Mathias
Hallo!

Delphi-Quellcode:
var newfile:String
...
newfile:=WordDocument1.MailMerge.DataSource.DataFields('NAME').Value;

hallo

probiers mal mit

Delphi-Quellcode:
WordDocument1.MailMerge.DataSource.DataFields.Item('Name').Value;
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.

Gruß Frank

H.Mathias 24. Feb 2010 12:09

Re: Serienbrief einzeln speichern mit individuellem Dateinam
 
Hallo,

Delphi-Quellcode:
newfile:=WordDocument1.MailMerge.DataSource.DataFields.Item('Name').Value;
Da kommt die Fehlermeldung:
"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

Keldorn 24. Feb 2010 12:13

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 22:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz