Entwickler-Ecke

Dateizugriff - Serienbrief Word


chickenfigt1989 - Mo 02.07.12 05:14
Titel: Serienbrief Word
Hallo,
Ich habe in einer Listbox mehrere Adressen die ich für einen Brief brauche.
Wie ich eine Adresse in einen Word Dokument bekomme hab ich schon hin bekommen mit:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
procedure TForm2.Button1Click(Sender: TObject);
var
  Word: OLEVariant;

begin
   try
    Word := CreateOleObject('Word.Application');
  except
    ShowMessage('Word kann nicht geöffnet werden!');
    Exit;
  end;
  // Show Word
  Word.Visible := True;
  // Add a new Document
  Word.Documents.Add;
  if Word.ActiveWindow.View.SplitSpecial <> 0 then
    Word.ActiveWindow.Panes[2].Close;
  if (Word.ActiveWindow.ActivePane.View.type = 1or
    (Word.ActiveWindow.ActivePane.View.type = 2or
    (Word.ActiveWindow.ActivePane.View.type = 5then
    Word.ActiveWindow.ActivePane.View.type := 3;
  Word.ActiveWindow.ActivePane.View.SeekView := 9;

  Word.Selection.Font.Name     := 'Times New Roman';
  Word.Selection.Font.Size     := 12;
  Word.Selection.Font.Bold     := True;
  Word.Selection.ParagraphFormat.Alignment :=  2;
   Word.Selection.TypeText(FormatDateTime('dd.mm.yyyy', Now));
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.Font.Name := 'Times New Roman';
  Word.Selection.Font.Size := 12;
  Word.Selection.Font.Bold := True;



  if Word.Selection.HeaderFooter.IsHeader = True then
    Word.ActiveWindow.ActivePane.View.SeekView := 10
  else
    Word.ActiveWindow.ActivePane.View.SeekView := 9;

  Word.ActiveWindow.ActivePane.View.SeekView := 0;
   Word.Selection.Font.Name := 'Times New Roman';
  Word.Selection.Font.Size := 12;
  Word.Selection.Font.Bold := true;
  Word.Selection.TypeText(Text := Edit3.Text + ' ' + edit2.Text);
  Word.Selection.TypeParagraph;
  Word.Selection.TypeText(Text := edit4.Text);
  Word.Selection.TypeParagraph;

  Word.Selection.Font.Name := 'Times New Roman';
  Word.Selection.Font.Size := 12;
  Word.Selection.Font.Bold := true;

  Word.Selection.TypeText(Text := edit5.Text );
  Word.Selection.TypeParagraph;
  Word.Selection.TypeText(Text := edit6.Text);
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.Font.Name     := 'Arial';
  Word.Selection.Font.Size     := 14;
  Word.Selection.Font.Bold     := True;
  Word.Selection.TypeText(Text := Combobox1.Text);
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.Font.Name := 'Times New Roman';
  Word.Selection.Font.Size := 12;
  Word.Selection.Font.Bold := True;
  if radiogroup1.ItemIndex = 0 then
    Word.Selection.TypeText(Text := 'Sehr geehrter Herr ' + edit2.Text+','+#13#10+#13#10)
  else
    Word.Selection.TypeText(Text := 'Sehr geehrte Frau ' + edit2.Text+','+#13#10+#13#10)
end;


Allerdings hab ich ca. 100 Adressen in der Listbox und eine Briefvorlage.
Klickt man nun den Button Serienbrief an sollte man die Briefvorlage wählen können und der Brief wird in Hintergrund mit der Ersten Adresse geöffnet, gedruckt und Geschlossen und dann das gleiche mit der nächsten Adresse. Das sollte mit allen Markierten Adressen von der Listbox geschehen.

Oder wenn der erste Vorschlag nicht geht dann sollten alle Markierten Adressen Seperat in der Briefvorlage geöffnet werden.

Beispiel Lösung 1:

Ich habe 30Adressen Markiert und nun klicke ich auf Serienbrief.

Delphi öffnet nun den OpenDialog um die Briefvorlage zu wählen.

Nun wird die Briefvorlage in Hintergrund geöffnet, Adresse reingeladen, Brief gedruckt und wieder geschlossen und das mit 30 Verschiedenen Adressen.

Beispiel Lösung 2:

Wieder sind 30Adressen markiert.

Delphi Öffnet wieder den OpenDialog um die Briefvorlage zu wählen.
Nun wird die Briefvorlage 30Mal geöffnet und in jeden Dokument ist einer der 30Markierten Adressen drin.

Kann mir von euch wer weiter helfen?

lg


chickenfigt1989 - Di 03.07.12 06:21

Kann mir den Niemand Helfen?


Martok - Di 03.07.12 16:17

Wenn du verrätst, wo das Problem ist?


chickenfigt1989 - Di 03.07.12 22:11

Das Problem ist das ich nicht weis und auch nirgends gefunden habe wie ich mit nur einen Button Klick sämtliche Markierten Adressen in eine Word Vorlage bring.

lg


Blawen - Mi 04.07.12 00:09

Indem Du Datensatz für Datensatz (Zeile) an Word übermittelst?

//Edit

Wichtig wäre es, zu wissen, wie Deine Problemstellung genau aussieht:

- Reicht es Dir nicht, die Datensätze einzeln an die Wordvorlage zu übermitteln und auszudrucken?
- Willst Du ev. die Ausdrucke in einem neuen Dokument zusammenführen (Word: Individuelle Briefe bearbeiten)


Delete - Mi 04.07.12 03:14

user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo, Ich habe in einer Listbox mehrere Adressen die ich für einen Brief brauche.


Das macht man so nicht. MS-Word bringt doch bereits eine Serienbrief-Funktion mit. Du machst dir einfach eine Vorlage, die Datenbank-Felder enthält, und exportierst dann von deinem Programm aus CSV-Datei, die Word als Datenbank behandeln kann. Als Beispiel kannst du dir gerne mal meinen Adress-Manager [http://www.pcheil.de/Site/Adress.htm] anschauen.


chickenfigt1989 - Mi 04.07.12 13:02

Sowas wie Perlsau sein Adress Manager sollte es werden allerdings sollen die markierten Einträge in eine Vorhandene Brief Vorlage geladen werden.


Delete - Mi 04.07.12 13:49

user profile iconchickenfigt1989 hat folgendes geschrieben Zum zitierten Posting springen:
Sowas wie Perlsau sein Adress Manager sollte es werden allerdings sollen die markierten Einträge in eine Vorhandene Brief Vorlage geladen werden.


Genau das tut mein Adressmanager ... Die Mustervorlagen liegen sinnigerweise im Ordner Vorlagen, einmal für Word und einmal für OpenOffice. Jetzt mußt du dir das nur noch programmieren ... und sei geduldig, das ist keine Aufgabe für einen Nachmittag ...