Hi Zusammen,
ich möchte aus einem selbstgeschrieben Programm heraus einen Word-Serienbrief mit Excel-Datenquelle erzeugen. Das funktioniert an sich auch bestens. Nur eine Sache stört mich: Beim Zusammenführen der Dokumente popt aus Word ein Dialog zur Auswahl des gewünschten Arbeitsblatts auf. Leider auch dann, wenn es nur ein Arbeitsblatt in der Excel-Datei gibt. Meine Frage: Kann man diesen Dialog verhindern? Irgendwie angeben, dass er gleich ohne zu Zucken das eine Arbeitsblatt aus der Excel-Datei benutzt?
Gruß, Bernd
Moin Moin,
die Antwort auf deine Frage ist: JA
Grüße aus Rostock
Wolfgang
(Netwolf)
Moin Wolfgang,
ok, hast du noch einen Tip für mich wie ich die Dialogbox verhindern kann? Ist das eine Einstellung oder ein Parameter im Interface oder???
Gruß, Bernd
Moin Moin,
wie soll ich das können? Sorry, aber meine Glaskugel ist gerade zum polieren. Du bist hier im Brett -> Office-Software allgemein und nicht in einem der Programmsprachen Bretter.
Kannst du mir erst mal verraten, wie du Excel bisher aufrufst? Programmiersprache? Beispiel-Code? Office Version?
Grüße aus Rostock
Wolfgang
(Netwolf)
Hi Wolfgang,
bin schon ganz bewusst hier, denn ich denke, das Problem ist allgemeiner Natur, egal ob ich den Serienbrief direkt aus Word heraus starte oder, wie bei mir, über ein Programm.
Ich nutze Office 2010. Die Excel-Datei wird als Datenquelle für einen Word-Serienbrief genutzt, d.h. ich öffne Excel nicht explizit, sondern das geschieht von Word, indem ich die Exceldatei als Datenquelle für den Serienbrief angebe. Und dabei kommt die blöde Messagebox zur Auswahl des Arbeitsblattes, die ich nicht gebrauchen kann.
Gruß, Bernd
Ich nutze Office 2010. Die Excel-Datei wird als Datenquelle
für einen Word-Serienbrief genutzt, d.h. ich öffne Excel nicht
explizit, sondern das geschieht von Word, indem ich die
Exceldatei als Datenquelle für den Serienbrief angebe. Und
dabei kommt die blöde Messagebox zur Auswahl des
Arbeitsblattes, die ich nicht gebrauchen kann.
Hallo Bernd,
Wolfgang geht/ging wie ich auch aufgrund deines Satzes:
„ich möchte aus einem selbstgeschrieben Programm heraus einen
Word-Serienbrief mit Excel-Datenquelle erzeugen“
davon aus daß du da ein selbstgeschriebenes Programm hast/benutzt.
Du startest also den Seriendruck in Word 2010 manuell mit Sendungen—Seriendruck starten!?
Gruß
Reinhard
Moin Moin,
wie Reinhard schon richtig erkannt hat, bin ich davon ausgegangen, dass du den Aufruf per Programm bewerkstelligst.
In Word erstelle ich einen Serienbrief. Bei der Erstellung werde ich gefragt - wenn die Datenquelle mehrere Tabellen enthält - welche ich nutzen möchte. Diese wähle ich ein mal aus und speichere meinen Serienbrief. Danach werde ich nie wieder gefragt, welche Tabelle ich für den Serienbrief nutzen möchte.
Halt, stimmt nicht! Verändere ich etwas an den Exceltabellen, so dass meine ursprüngliche Vorgabe nicht mehr mit der aktuellen Exceltabelle übereinstimmt, fragt mich Word welche ich denn nun nutzen möchte.
In so einem Fall, würde ich meinen Serienbrief erneut öffnen, die Datenquelle richtig (neu) einstellen, das Ganze speichern und ich würde auch nicht mehr gefragt.
Grüße aus Rostock
Wolfgang
(Netwolf)
Hi Zusammen,
sorry für das Durcheinander. Ich muss es genauer erklären:
Aus einem .Net-Programm heraus öffne ich ein neues Dokument mit word 2007 oder 2010, basierend auf einer angepassten Vorlage. Dann rufe ich ein VBA-Makro in dem Word-Dokument auf. Darin wird das Dokument mit einer Datenquelle verbunden:
…
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
With ActiveDocument.MailMerge
.OpenDataSource
.Destination = wdSendToNewDocument
’ Das Ausführen des Zusammenführens erfolgt übers Menü oder wie hier
’ aus dem Makro heraus:
.Execute
End With
…
Dabei erscheint jedesmal der Dialog zur Auswahl der Excel-Tabelle. Diesen Dialog möchte ich vermeiden. Da das Verhalten unabhängig davon ist, ob ich das Zusammenführen per Mausklick im Menü vornehme oder aus dem Makro heraus, denke ich, dass es sich nicht um ein VBA-spezifisches sondern ein allgemeines Problem handelt.
Gruß, Bernd
Moin Moin,
also gibt es doch Code 
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
With ActiveDocument.MailMerge
.OpenDataSource
nun, wenn du die Hälfte hier nicht angibst, kann das auch nichts werden. Gerade die Zeile .OpenDataSource wäre hier wichtig gewesen.
Wie auch immer…das sollte die Lösung sein:
'Retrieves data from a named range in an Excel workbook.
Dim oMM as Word.MailMerge
Set oMM = ActiveDocument.MailMerge
oMM.MainDocumentType = wdFormLetters
oMM.OpenDataSource Name:= „c:\book1.xls“, Connection:= „MyNamedRange“
Quelle: http://support.microsoft.com/kb/289830/de
HTH
Grüße aus Rostock
Wolfgang
(Netwolf)
Hi Wolfgang,
genau das war es! Ich habe noch den SybType ergänzt und damit z.B. eine Zeile wie folgt:
…
.OpenDataSource name:=„C:\tmp\Mappe1.xls“, Connection:=„Tabelle1“, SubType:=wdMergeSubTypeWord2000
…
Besten Dank für die Unterstützung!
Grüße aus Bonn an die Küste
Bernd