Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1196to1200
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
Inhaltsverzeichnis

aus Excel in den Serienbrief

aus Excel in den Serienbrief
Thomas
Hallo zusammen,
ich habe viel und lange im Netz gesucht, aber ich habe nicht das gefunden, was ich suche bzw. brauche.
Ich habe folgende Herausforderung :
Ich verwalte eine Liste, in der Anschriften stehen mit Email-Anschrift. Steht man auf einer Email Anschrift, dann wird mittels ShortCut ein Programm gestartet, dass entweder eine fertige Email aufruft oder in einen Serienbrief einsteigt. ( hier geht es rein um zeitersparnis. Das Übertragen der relevanten Daten in Outlook und / oder word dauert mir einfach zu lange ).
Den Code für das Erstellen der vorgefertigten Email habe ich bereits fertig. Wie man in den Wordbrief kommt, habe ich auch schon so halbert herausbekommen, aber ich bekomme immer noch einen "Read Only" Hinweis und ich komme auch nicht in den Serienbrief auf den entsprechenden Serienbriefdatensatz.
Ich wäre daher sehr dankbar, wenn ich eine Lösung bekommen könnte für
-"Erkennen" um welchen Datensatz(nr.) es sich in der Tabelle handelt, wenn ich auf der Zelle/Zeile Email stehe ( das kann ich aber selbst erarbeiten ) und übergabe der Nr in eine Variable.
- Starten eines bestimmten vorgefertigten Serienbriefes, der mit der Exceltabelle verknüpft ist. Den Pfad bzw. den Namen trage ich in der Exceltabelle ein, so dass man ihn nicht erst suchen muß, sondern als Wert übergeben kann.
- "Übergabe" der Variablen und somit "Ansteuern" des entsprechenden Serienbriefes und Anzeigen des fertigen Briefes in Word.
Ich hoffe, ich habe mich verständlich ausgedrückt.
Herzlichen Dank für jegliche Hilfe.
Grüße an alle
Thomas
AW: aus Excel in den Serienbrief
09.02.2011 11:03:44
OttoH
Hallo Thomas,
die Nummer des Datensatzes bekommst Du mit ActiveCell.Row raus. Wenn die Liste eine Überschrift hat, muss noch 1 subtrahiert werden.
Als Lösung zur Übergabe der Variablen nach Word habe ich mal die Dokumentvariablen in Word verwendet. Ich habe zuerst eine Dokumentvariable in Word angelegt
Activedocument.Variables.Add Name:= "Nummer", Value :=" "
und diesen Wert dann von Excel aus nach dem Starten des Worddokuments mit
ActiveDocument.Variables("Nummer") = Activecell.row -1 gefüllt. So wusste Word, welcher Datensatz gedruckt werden soll.
Das Anspringen des gewünschten Satzes geht mit
ActiveDocument.MailMerge.DataSource.ActiveRecord = Activedocument.variables("Nummer").value
Ich hoffe, das hilft ein wenig weiter. Den gesamten Code habe ich leider nicht mehr.
Gruß OttoH
Anzeige
AW: aus Excel in den Serienbrief
09.02.2011 11:11:54
Thomas
.... ah perfekt!
Und dürfte ich dich noch fragen, wie ich diese Meldung mit dem "Read only" beim Öffnen weg bekäme ?
Danke für deine Hinweise. Das hilft sehr weiter.
Grüße
Thomas
AW: aus Excel in den Serienbrief
09.02.2011 11:14:46
OttoH
Hallo Thomas,
das ReadOnly kann ich nicht erklären.
Sag mal Bescheid, wenn der Rest läuft.
Gruß OttoH
AW: aus Excel in den Serienbrief
09.02.2011 11:26:26
Thomas
Mach ich.
Kann aber heute abend erst werden. zum Programmieren brauche ich ein wenig Ruhe...
schönen Tag noch
Thomas
AW: aus Excel in den Serienbrief
09.02.2011 12:39:39
Thomas
bitte noch eine Frage...
muß ich das ActiveDocument irgendwie deklarieren ? Ich bekomme bei der ersten Zeile - also ActiveDocument.Variables einen Runtime Error.
Grüße
Thomas
Anzeige
AW: aus Excel in den Serienbrief
09.02.2011 13:21:15
Thomas
... ich noch einmal.
Ich habe meine Mittagspause sein lassen, weil mir das natürlich keine Ruhe läßt....
Das wäre nun mal mein Code
Sub test()
Dim WordApp As Object
Dim WordDoc As Object
On Error GoTo SitzungEröffnen
Set WordApp = GetObject(, "Word Application")
GoTo weiter
SitzungEröffnen:
Set WordApp = CreateObject("Word.Application")
weiter:
WordApp.Visible = True
'Worddokument definieren
brief_name = Sheets("Tabelle1").Cells(37, 2).Value & "\" & Sheets("Tabelle1").Cells(38, 2).Value
'Datensatznummer definieren
dsatz = ActiveCell.Row - 1
'Serienbrief aufmachen
Set WordDok = WordApp.Documents.Open(brief_name)
WordApp.ActiveDocument.variables.Add Name:="Nummer", Value:=""
WordApp.ActiveDocument.variables("Nummer") = dsatz
WordApp.ActiveDocument.MailMerge.DataSource.ActiveRecord = WordApp.ActiveDocument.variables("Nummer").Value
Set WordDok = Nothing
Set WorApp = Nothing
Folgende Probleme hätte ich :
- Habe ich bereits einen Namen = "Nummer" definiert, dann meckert er beim zweiten Mal Excel, dass der Name bereist definiert ist. Das kann ich aber mit einer Schleife abfragen
- Beim Öffnen des Worddokuments erkennt word nicht, dass es sich um einen Serienbrief handelt. Das erkenne ich daran, dass die Serienbriefverknüpfungen weg sind. Mache ich das Dokument so auf, dann sind sie wieder da. Komisch....
- Daher klappt auch die zeile mit dem Mail Merge nicht. Weil ja kein Serienbrief vorhanden ist.
Dürfte ich hier noch einmal um Hilfe bitten ?
Vielen Dank
Thomas
Anzeige
AW: aus Excel in den Serienbrief
09.02.2011 19:45:50
OttoH
Hallo Thomas,
die Variablen werden nur einmal mit ADD definiert und halten dann ewig. Sie werden lediglich wieder neu gefüllt.
Ansonsten waren wohl einige kleine Tippfehler in Deinem Programm und einige Deklarationen fehlten.
Hier der verbessrte Code
Sub test()
Dim WordApp As Object
Dim WordDoc As Object
Dim brief_name As String
Dim dsatz As Long
On Error GoTo SitzungEröffnen
Set WordApp = GetObject(, "Word Application")
GoTo weiter
SitzungEröffnen:
Set WordApp = CreateObject("Word.Application")
weiter:
WordApp.Visible = True
'Worddokument definieren
brief_name = Sheets("Tabelle1").Cells(37, 2).Value & "\" & Sheets("Tabelle1").Cells(38, 2). _
Value
'Datensatznummer definieren
dsatz = ActiveCell.Row - 1
'Serienbrief aufmachen
Set WordDoc = WordApp.Documents.Open(brief_name)
'    WordApp.ActiveDocument.variables.Add Name:="Nummer", Value:=""
WordApp.ActiveDocument.variables("Nummer") = dsatz
WordApp.ActiveDocument.MailMerge.DataSource.ActiveRecord = WordApp.ActiveDocument.variables(" _
Nummer").Value
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
Ich habe das Programm nicht getestet, lediglich über Debuggen - Kompilieren die Schwachstellen ausgebaut.
Ich bleibe noch am Ball und bin gespannt, was daraus wird.
Bis bald OttoH
Anzeige
AW: aus Excel in den Serienbrief
09.02.2011 21:30:15
OttoH
Hallo Thomas,
ich habe noch ein wenig gebastelt. So sollte es klappen:
Sub test()
Dim WordApp As Object
Dim WordDoc As Object
Dim brief_name As String
Dim dsatz As Long
On Error GoTo SitzungEröffnen
Set WordApp = GetObject(, "Word Application")
GoTo weiter
SitzungEröffnen:
Set WordApp = CreateObject("Word.Application")
weiter:
WordApp.Visible = True
'Worddokument definieren
brief_name = Sheets("Tabelle1").Cells(37, 2).Value & "\" & Sheets("Tabelle1").Cells(38, 2). _
Value
'Datensatznummer definieren
dsatz = ActiveCell.Row - 1
'Serienbrief aufmachen
Set WordDoc = WordApp.Documents.Open(brief_name)
'    WordApp.ActiveDocument.variables.Add Name:="Nummer", Value:=""
WordApp.ActiveDocument.variables("Nummer").Value = dsatz
WordApp.ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\DATEN\Schulungen\Word-SB\DQ-Excel.xls", ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\DATEN\ _
Schulungen\Word-SB\DQ-Excel.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLED" _
, SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
WordApp.ActiveDocument.MailMerge.DataSource.ActiveRecord = WordApp.ActiveDocument.variables(" _
Nummer").Value
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub

Du hattest ja auch geschrieben, dass die Word-DAtei zwar geöffnet wird, die Serienbrieffunktionalitäten allerdings verloren gehen. Also ordne ich mir die Datenquelle per VBA zu.
In der MailMerge.OpenDataSource-Anweisung muss noch zweimal die Datenquelle angepasst werden.
Du musst auch noch in Excel im VBA-Editor unter Extras - Verweise die gültige Word-Bibliothek einbinden.
Gruß und bis bald OttoH
Anzeige
AW: aus Excel in den Serienbrief
10.02.2011 09:01:03
Thomas
Guten Morgen,
also....
puh...
zunächst ganz herzlichen Dank für all die Mühe, die du dir gemacht hast. Da bin ich platt, erschlagen und einfach nur baff.
DANKE!!!!
Und nun weiter.
Zunächst eine Frage. Wir verstehen usn schon richtig, dass aus der Excelliste ( die ja für das Worddokument die Datenquelle ist ), der Wordserienbrief gestartet wird. Also nicht Wordserienbrief startet Excelliste, sondern genau andersherum Excelliste startet Wordserienbrief. Ich habe nämlich gelesen, das ginge so garnicht.
Sorry bitte, aber meine Kenntnisse in VBA sind anscheinend bei weitem nicht so gut, wie deine. Welche Wordbibliothek muß ich einbinden ? Da ich auch noch hier im Büro eine englische Excel Version habe, schlage ich ich mich mit den ganzen Übersetzungen herum. Das geht unter Tools-References-Available References ? Dort habe ich dann 3 mögliche Word-Sachen zum einbinden.
Die Zeile mit dem Verweis auf die Datei im C Laufwerk wird bei mir rot beim einfügen. Ich gehe davon aus, dass ich hier meinen Dateinamen einfügen muß ? ... was schwierieg wird ( aber lösbar ), da sich der Dateiname täglich je nach Addressstand ändert. Was diese Zeile alles macht, keine Ahnung. Aber muß ich das wissen ? Ich glaube schon....
Lieber Otto, mir ist das schon ein wenig peinlich, dass du dir so viel Mühe mit mir gibst. Ich wußte auch nicht, dass das so einen Aufwand macht. Auf der anderen Seite fuchst mich das gewaltig, dass ich das nicht hinbekomme... :-)
Also. Ich stelle es dir frei, mir weiterzuhelfen. Ich kann dir nur meinen Respekt und meinen Dank zollen. Was anderes habe ich nicht zu bieten..... Ansonsten habe ich jetzt heute Nacht einen Umweg gefunden. Mittels Textfelder ginge das auch. Das ist zwar bei weitem nicht so komfortabel wie ein Serienbrief ( weil ich dann alle Wenn... Dann Abfragen mittels VBA in der Excledatei erst klären muß, um sie dann zu übergeben und im Wordserienbrief die Dinger halt schon veranckert sein könnten ) aber für mich wesentlich leichter und schneller lösbar. Ein erster minimaler Test läßt mich etwas frohlocken...
Bitte nochmals. Danke für die Mühen und ich möchte das gerne mit dem Serienbrief machen. Aber wenn das zu kompliziert ist für mich, dann gehe ich lieber den Umweg.
Ganz herzliche Grüße
Thomas
Liebe Grüße
Thomas
Anzeige
AW: aus Excel in den Serienbrief
10.02.2011 09:29:08
OttoH
Hallo Thomas,
Excelliste startet Wordserienbrief. Ich habe nämlich gelesen, das ginge so garnicht.
Mein Beispiel zeigt, dass es doch geht ;-) Geht nicht, gibts nicht!
Welche Wordbibliothek muß ich einbinden ?
Bei mit (Office 2003) ist es die MS Word 11 Object Library
Bei Die wird sie so ähnlich, nur mit einer höheren Versionsnummer lauten
da sich der Dateiname täglich je nach Addressstand ändert
Dann muss der Dateiname vorher noch eingegeben werden.
keine Ahnung. Aber muß ich das wissen ? Ich glaube schon...
Ich glaube nicht, dass man das alles wissen muss. Ich habe die Zeilen aufgezeichnet und mich nicht
weiter drum gekümmert, was da alles steht.
Ansonsten viel Spaß beim Basteln. Halt mich mal auf dem Laufenden.
Gruß OttoH
Anzeige
AW: aus Excel in den Serienbrief
10.02.2011 12:28:12
Thomas
jesus....
also.....
wir kommen der Sache näher.
Die Library habe ich aktiviert
den Code angepasst
Ich komme bis zu dieser Mamut Zeile. Word öffnet sich, aber es kommt eine Fehlermeldung in Word auf, die besagt :
Cofirm DataSource
Open Data Source :
OLE DB Data Files
Im VBA kommt zeitgleich folgende Fehlermeldung :
Runtime Error 5922
Word was unable to open the datasource
Das würde für mich bedeuten, dass Word die Datenbank öffnen will. Aber sie IST ja schon offen....
Mache ich was falsch ?
Kann es daran liegen, dass Du 2003 hast und ich 2007 ?
Lieben Dank für deine Antwort
Thomas
Anzeige
AW: aus Excel in den Serienbrief
10.02.2011 15:35:12
OttoH
Hallo Thomas,
es könnte sein, dass 2003 und 2007 leicht geänderte Befehle haben. Zeichne den Kram in Word doch
mal mit 2010 auf und vergleiche die Codes.
Ansonsten setze die Pfadangaben mal in "...". Es könnte sein, dass in Deinen Pfaden eine Leerstelle ist,
die dann für Chaos sorgt.
Gruß OttoH
AW: aus Excel in den Serienbrief
10.02.2011 16:34:14
Thomas
so.. jetzt gebe ich auf.
hab das Macro über word geschrieben ( also die Verknüpfung ), den Teil in das Excel Makro eingesetzt, keine Variablen verändert.
Und es hat wunderbar geklappt.
Das Word wieder zugemacht, nereu versuch und
schwupps
der gleiche Fehler.....
grrrrr
Jetzt gebe ich auf.
Oder würde dir noch was einfallen ?
Danke ganz herzlich noch einmal für deine Hilfe
Thomas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige