ich möchte mit Word 2000 einen Serienbrief an ca. 200 Personen erstellen. Die Daten sind in einer Excel-Tabelle hintelegt.
Nun ist es so, daß da von einer Familie bis zu 5 Personen dabei sind. Ich möchte jetzt nicht für jedes einzelne Familienmitglied einen Ausdruck erstellen, sondern an alle nur 1 Ausdruck verschicken.
Also z.B. in der Anschrift:
Mustermann Max und Erika und
Florian und Bettina und Sven
Straße
Ort
und dann natürlich der nomale Text.
Wenn es jetzt nur ein einzelne Person ist, dann so:
Mustermann Max
Straße
Ort
Wie kann ich das am besten in Word bzw. in der Excel-Tabelle bewerkstelligen?
so einfach beantworten kann man das nicht. Wie sehen die Adressen in Excel aus? Kannst Du eine Beispielmappe hochladen bzw. die Tabellenstruktur hier veröffentlichen — bitte den pre-Tag verwenden?
Nun ist es so, daß da von einer Familie bis zu 5 Personen
dabei sind. Ich möchte jetzt nicht für jedes einzelne
Familienmitglied einen Ausdruck erstellen, sondern an alle nur
1 Ausdruck verschicken.
Mustermann Max und Erika und
Florian und Bettina und Sven
Straße
Ort
Hallo Schäkel,
in Excel, Alt+F11, Einfügen—Modul, nachstehenden Code reinkopieren, die beiden Blattnamen anpassen, VB-Editor schließen.
Makro in Excel ausführen lassen über Alt+F8…
Soll das dann lange Anschriftsfeld (vorname) umgebrochen werden?
Nach wievielen Zeichen?
Gruß
Reinhard
Option Explicit
'
Sub Seriendruck()
Dim Zei1 As Long, Zei2 As Long, wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets("Tabelle1") 'Originaltabelle
Set wks2 = Worksheets("Tabelle2") 'Seriendrucktabelle
wks2.UsedRange.ClearContents
Application.ScreenUpdating = False
With wks1
.Range("A1:smiley:1").Copy Destination:=wks2.Range("A1")
Zei2 = 1
For Zei1 = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
Zei2 = Zei2 + 1
.Range(.Cells(Zei1, 1), .Cells(Zei1, 4)).Copy Destination:=wks2.Cells(Zei2, 1)
While .Cells(Zei1, 1).Value = .Cells(Zei1 + 1, 1).Value
Zei1 = Zei1 + 1
wks2.Cells(Zei2, 2).Value = wks2.Cells(Zei2, 2).Value & " und " & .Cells(Zei1, 2).Value
Wend
Next Zei1
End With
Application.ScreenUpdating = True
End Sub
Es gilt für diese Internetseite wer-weiss-was.de.
Du schreibst Deinen Text ganz normal in die Antwort. Was wie Computerschrift aussehen soll (und wo die Leerzeichen am Zeilenanfang erhalten bleiben sollen), markierst Du. Dann klickst Du auf das grau hinterlegte PRE (direkt über dem Eingabefeld, in das Du Deine Antwort schreibst). Dann wird die Markierung von zwei sog. Tags umschlossen und anders dargestellt, nämlich so:
Wegen der Schrift erleichtert das das Lesen ungemein.
Alle Personen stehen fortlaufend in je einer Zeile untereinander. Bei Familien ist nur Eintrag in Spalte B unterschiedlich, alles andere gleich.
Kann es nicht vorkommen, daß
a) zwei Personen gleiche Nachnamen, aber ungleiche Anschriften
b) ungleiche Nachnamen, aber gleiche Anschriften
haben? Das wäre in jeder normalen Datenbank abzufangen — bei Dir nicht?
Ich muß jetzt zugeben, daß ich nicht der Fachmann für Makros usw. bin.
Ich weiß jetzt nicht, wie das gehen soll.
Was ich da jetzt nicht verstehe, was hat es da mit dem zweiten Tabellenblatt auf sich? Eine Kopie vom ersten? Oder wird nach Makroausführung ein zweites Tabellenblatt erzeugt?
Sorry nochmal, vielleicht gibt es eine einfache Erklärung für so Dummies wie mich?
hab den Fehler jetzt gefunden, Es war in der ursprünglichen Tabelle nur 1 Tabellenblatt (Tabelle1) hinterlegt.
Aber das Makro macht einen Fehler.
Es unterscheidet nicht zwischen unterschiedliche Straßennamen bzw. Orte.
Beispiel:
ich möchte mit Word 2000 einen Serienbrief an ca. 200 Personen
erstellen. Die Daten sind in einer Excel-Tabelle hintelegt.
Nun ist es so, daß da von einer Familie bis zu 5 Personen
dabei sind.
das klingt nach Briefen an Vereinsmitglieder.
Wenn ich einen Brief bekäme, der so adressiert wäre:
Mustermann Max
Straße
Ort
würde ich mich beim Vorstand beschweren und dem Briefschreiber Nachhilfe aufs Auge drücken.
Selbstverständlich hat eine Briefanschrift so auszusehen:
Herrn
Max Mustermann
Straße
Ort
Alles andere ist entweder unhöflich oder stümperhaft.
hab den Fehler jetzt gefunden, Es war in der ursprünglichen
Tabelle nur 1 Tabellenblatt (Tabelle1) hinterlegt.
dafür bist du zuständig, daß beide Blätter vorhanden sind und auch die Namen im Code exakt übereinstimmen.
Es unterscheidet nicht zwischen unterschiedliche Straßennamen
bzw. Orte.
Okay, nachstehend neuer Code der dies berücksichtigt.
Gruß
Reinhard
Sub Seriendruck()
Dim Zei1 As Long, Zei2 As Long, wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets("Tabelle1") 'Originaltabelle
Set wks2 = Worksheets("Tabelle2") 'Seriendrucktabelle
wks2.UsedRange.ClearContents
Application.ScreenUpdating = False
With wks1
.Range("A1:smiley:1").Copy Destination:=wks2.Range("A1")
Zei2 = 1
For Zei1 = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
Zei2 = Zei2 + 1
.Range(.Cells(Zei1, 1), .Cells(Zei1, 4)).Copy Destination:=wks2.Cells(Zei2, 1)
While Gleich(wks1, Zei1) = True
Zei1 = Zei1 + 1
wks2.Cells(Zei2, 2).Value = wks2.Cells(Zei2, 2).Value & " und " & .Cells(Zei1, 2).Value
Wend
Next Zei1
End With
Application.ScreenUpdating = True
End Sub
'
Function Gleich(wks1 As Worksheet, Zei1 As Long) As Boolean
With wks1
If .Cells(Zei1, 1).Value = .Cells(Zei1 + 1, 1).Value Then
If .Cells(Zei1, 3).Value = .Cells(Zei1 + 1, 3).Value Then
If .Cells(Zei1, 4).Value = .Cells(Zei1 + 1, 4).Value Then
Gleich = True
End If
End If
End If
End With
End Function
Auf der anderen Seite haben sich eben Mitglieder bzw. die innerhalb des gleichen Haushaltes beschwert, daß eine Einladung, die persönlich an jedes einzelne Mitglied gerichtet war (inklusiv korrekter Anrede), reine Verschwendung an Papier ist. Es würde ein Ausdruck, wo alle im Namensfeld aufgeführt sind, reichen.
Wir haben es eben diesmal anders probiert, mal sehen ob Beschwerden kommen. Aber wie es überall ist, es findet sich immer irgendwo ein kleiner Fliegenschiß, an dem sich jemand darüber aufregt.
Das Ende vom Lied ist dann, daß sich keiner mehr (ehrenamtlich) um irgendetwas kümmern mag. Denn wie man es auch macht, irgendwie macht man es immer verkehrt.
Und darum liebe® G., ruhig sich beschweren; es könnte dann aber leicht sein, daß mal jemand sagt, mit mir nicht mehr, macht euren Kram doch selber…
reine Verschwendung an Papier
ist. Es würde ein Ausdruck, wo alle im Namensfeld aufgeführt
sind, reichen.
Papiersparen ist ja auch vernünftig.
Aber: Papiersparen und korrekte Anschrift mit Anrede und Vorname(n) zuerst schließen sich gegenseitig nicht aus.
Das Ende vom Lied ist dann, daß sich keiner mehr
(ehrenamtlich) um irgendetwas kümmern mag. Denn wie man es
auch macht, irgendwie macht man es immer verkehrt.
Und darum liebe® G., ruhig sich beschweren; es könnte dann
aber leicht sein, daß mal jemand sagt, mit mir nicht mehr,
macht euren Kram doch selber…
Haha, das ehrenamtliche Gejammer beeindruckt mich überhaupt nicht.
Kenne ich zur Genüge aus meinem Umfeld.
Papiersparen ist ja auch vernünftig.
Aber: Papiersparen und korrekte Anschrift mit Anrede und
Vorname(n) zuerst schließen sich gegenseitig nicht aus.
Wäre natürlich auch schön, wenn Du, bezogen auf die
Ausgangsfrage, hierzu die entsprechende Lösung anbieten
könntest.
Die Lösung ist logischerweise ein 2. Tabellenblatt, das als Grundlage für den Seriendruck verwendet wird (—>das hast Du ja mittlerweile schon!). Dort eine Spalte „Anrede“ einfügen und mit Herrn/Frau/Familie oder was auch immer ausfüllen. Bei den Familien kommen je nach Länge 1 oder 2 Vornamen gleich ins Anrede-Feld dazu, damit der Postbote im Umschlag-Fenster den Nachnamen noch lesen kann.
Mit andern Worten: man bastelt an seiner Excel-Tabelle solange rum, bis sämtliche Anschriften formal korrekt dargestellt werden.
Excel und Word ist es nämlich egal, welche Einträge unter welchem Feldnamen erfolgen.
Einmaliger Zeitaufwand je nach Deiner Geschwindigkeit 20 bis 60 Minuten. Und das Seriendokument entsprechend anpassen: Anrede-Feld einfügen, Reihenfolge Vorname/Nachname ändern. Dauer: 1 Minute.
Übrigens kann das beste Makro der Welt folgendes nicht checken:
-gleiche Nachnamen + gleiche Anschrift ===> Personen gehören nicht zusammen
-ungleiche Nachnamen + gleiche Anschrift ===> Personen gehören zusammen.
Offensichtlich hast Du diese Fälle in der Mitgliederstruktur nicht.