Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel und Serienbrief

Excel und Serienbrief
08.06.2004 17:26:56
Uwe
Hallo zusammen,
folgendes Problem lässt mir die Haare zu Berge stehen:
Von Excel aus starte ich per VBA Word um die Daten aus einer Excel Tabelle
in einen Serienbrief zu steuern. (Auch wenn es sich dabei um die Erstellung von Schulzeugnissen handelt, bitte mich nicht hängenlassen ;-) )
Word und das Hauptdokument lassen sich öffnen. Beim Erstellen des
Serienbriefes wird es problematisch:
With WordObj.ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = LetzteZeile
End With
.Execute Pause:=False
End With
Bei der Ausführung der zweiten Zeile (.Destination ...) bekomme ich den
Fehler 5852: Das angeforderte Objekt ist nicht verfügbar.
Was ich überhaupt nicht verstehe: Bislang ist das Ding gelaufen, auf anderen Rechnern läuft es auch ohne zu mucken!
Danke im vorraus für die Hilfe!
Uwe Schönberg

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel und Serienbrief
08.06.2004 17:38:53
Ramses
Hallo
Diese Frage habe ich Dir bereits gestern im EXCEL-Center Forum beantwortet :-(
.Destination = .wdSendToNewDocument
Auf den Punkt achten vor "wdSend..."
oder mit
.Destination = WordObj.wdSendToNewDocument
Gruss Rainer
AW: Excel und Serienbrief
08.06.2004 17:43:58
Uwe
Hallo Ramses,
sorry, aber das hat nicht funktioniert. Hätte dir gerne in dem Forum geantwortet, aber da scheint Wartung angesagt. Hänge da im Moment ziemlich in der Luft, deswegen erscheine ich so nervig.
Gruss Uwe
AW: Excel und Serienbrief
08.06.2004 18:20:23
andre
Hallo Uwe,
von einem Punkt weiß ich nichts ...
hier mal ein Auszug aus einem Code von mir:
With wordObj
' erst mal der Seriendruck
With .ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Der Verweis auf die Microsoft Word 10.0 Object Library ist doch gesetzt oder? ...
Anzeige
AW: Excel und Serienbrief
08.06.2004 19:01:43
Uwe
Hallo Andre,
der Verweisist gesetzt. Danke. Aber du hast ja die selbe Zeile
.Destination = wdSendToNewDocument
wie ich, nur bei mir erscheint ein Fehler.
Ich hab jetzt die Faxen dick. Office wird runtergeworfen und neu installiert.
Uwe
Wer lesen kann ist klar im Vorteil... :-)
08.06.2004 20:33:23
Ramses
Hallo
ich habe dir schon gesagt, dass du auf den Punkt vor "wdSend.." achten musst !!!
Du verweist auf das Objekt mit
With WordObj
.-..
aber unten fehlt der Punkt und Excel weiss nicht, was es damit machen soll.
Als schreib
.wdSendDocument
oder
WordObj.wdSendDocument
Dann funktioniert das auch !!!
Gruss Rainer
Anzeige
Lesen kann ich schon...
09.06.2004 15:40:38
Uwe
Hallo Rainer,
ich habe das mit dem Punkt vor wdSendToNewDocument
probiert. Ebenfalls die andere von dir vorgeschlagene Alternative. Hat leider nicht funktioniert. Habe ich schon geschrieben.
Was jetzt das Problem gelöst hat war eine Neuinstallation von Office. Jetzt laufen die Prozeduren wieder wie früher. Weiß der Geier, woran das lag.
Auf jeden Fall vielen Dank für die Hilfe.
Uwe
AW: Wer lesen kann ist klar im Vorteil... :-)
09.06.2004 19:12:31
andre
Hallo Rainer,
Mit dem WordObj. greifst Du auf Dokumente, deren Inhalte / Eigenschaften und Methoden usw. zu. Konstanten dazu wie wdSendToNewDocument werden ohne vorangestellten Punkt eingegeben.
Wie gesagt, es läuft auch bei mir so und bei Uwe ja jetzt auch.
Anzeige
Hallo Uwe.......du könntest mir helfen
11.06.2004 13:11:46
Peter S
Hallo Uwe,
ich habe haargenau die gleiche Aufgabenstellung wie Du: in excel eine Datenquelle, die ich von excel aus mit einer "Word-Maske" mischen und per Serienbrief-Funktion ausdrucken will......nur sinds bei mir Sieger-Urkunden und keine Zeugnisse....
Du würdest mir sehr helfen, wenn du mir die Datei posten würdest.....
Vielen Dank
Peter S.
AW: Hallo Uwe.......du könntest mir helfen
11.06.2004 15:49:26
Uwe
Hallo Peter,
es geht um Bundesjugendspiele, oder? Da gibts jede Menge fertiger Lösungen im Internet. Wir machen an unserer Schule dieses Jahr zum ersten Mal die Auswertung per Computer und haben uns für eine Lösung von www.rorig.de entschieden. Druckt auch die Urkunden!!

Wie arbeitet mein Programm:
In einem Arbeitsblatt SchülerNoten werden für alle Schüler einer Klasse die Noten registriert. Für jede Klasse eine Arbeitsmappe.
Zuerst wird ermittelt, wie viele Datensätze die Datei enthält und in die Variabele LetzteZeile geschrieben. LetzteZeile = i - 2 musst du evtl. anpassen.
Dann wird Word gestartet und das Hauptdokument geladen (WordFileName = "Grundschule34.doc"). Das Hauptdokument kennt bereits die Datenquelle!!!
Naja, dann wird der Serienbrief eben erstellt und in ein neues Dokument geschrieben. Hier wird auch die Variabele LetzteZeile benötigt.
Zum Schluss gibts noch ein bisschen Suchen/Ersetzen, aber das wirst du nicht brauchen.
Übrigens, das ganze Zeugs ist nicht auf meinem Mist gewachsen. Ich habe ein Makros in Word aufgezeichnet dann bearbeitet bzw. angepasst.
Viel Glück, hoffentlich war's ne Hilfe.
Uwe


Sub ZeugnisAusgabeStarten()
Dim WordObj As Object
Dim WordFileName As String
Dim ExcelName As String
Dim i As Integer
Dim LetzteZeile As Integer
'Dieser Teil findet die letzte beschriebene Zelle
Worksheets("SchülerNoten").Select
Cells(1, 2).Select
i = 1
Do Until Cells(i, 2).Value = ""
Cells(i, 2).Select
i = i + 1
Loop
LetzteZeile = i - 2
ExcelName = ActiveWorkbook.FullName
Set WordObj = Nothing
Set WordObj = CreateObject("Word.Application.10")
WordObj.Visible = True
WordFileName = "Grundschule34.doc"
WordObj.changeFileOpenDirectory ActiveWorkbook.Path
WordObj.Documents.Open Filename:=WordFileName
With WordObj.ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = LetzteZeile
End With
.Execute Pause:=False
End With
WordObj.Windows("Grundschule34.doc").Activate
WordObj.ActiveWindow.Close
'Dieser Block sucht im Word Dorkument nach "- 0 -" und ersetzt durch "- - -"
WordObj.Windows("Serienbriefe1.doc").Activate
With WordObj.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "- 0 -"
.Replacement.Text = "- - -"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub

Anzeige
Danke Uwe.....m.T.
11.06.2004 22:34:33
Peter S
Hallo Uwe,
ich hab mir den code mal angesehen.....werd ihn morgen mal bei mir einbauen und probieren....nein nicht Bundesjugendspiele.......ich erarbeite gerade ein Programm zum Betreuen von Hundesportturnieren.....
Vielen Dank
werde in den nächsten Tagen berichten
Peter S.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige