Autor Beitrag
chickenfigt1989
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Mo 02.07.12 05:14 
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:

ausblenden volle Höhe 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Di 03.07.12 06:21 
Kann mir den Niemand Helfen?
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 03.07.12 16:17 
Wenn du verrätst, wo das Problem ist?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
chickenfigt1989 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: 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)

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 anschauen.
chickenfigt1989 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: 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.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 ...