Clever-Excel-Forum

Normale Version: Aus Excel mit VBA Serienbrief im Word speichern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Servus Leute,

vielen Dank für eure Hilfe. Mit dem Code von snb hab ich es tatsächlich zum laufen bekommen. Es gibt nur noch ein paar kleine Probleme. Will ich das Makro im Excel durchlaufen lassen, stoppt es irgendwann und es erscheint die Fehlermeldung:

Microsoft Excel wartet auf die Beendigung eine OLE-Aktion in einer anderen Anwendung

Ich habe mir dann über den Taskmanager das geöffnete Word Dokument aufgerufen und musste hier bestätigen, dass das Dokument die Excelverknüpfung (SQL-Anweisung) aktivieren soll. Dann hat alles geklappt.

Kann man das irgendwie automatisiert in den Code einfügen?

Außerdem benötige ich noch eine Möglichkeit, dem Code zu sagen, dass er mir nur die Daten aus Zeile x (z.B.: Zeile 1) in den Serienbrief einfügen soll und abspeichern.

Hintergrund ist, dass ich mir über eine User-Form die einzelnen Personen meiner Liste einzeln aufrufe und dann für genau diese Person einen Serienbrief brauche.

Vielen Dank für eure Hilfe

Gruß Felix
Niemand eine Idee wie ich die besagten Dinge noch einbauen kann?
Hallo,

mal ein ganz anderer Ansatz, den ich schon in vielen meiner Projekte verwende und dabei nie Probleme bekommen habe!

Warum den Umweg von Berlin nach Rom über Athen machen? Wenn ich schon die Daten(bank) der Briefempfänger in Excel verwalte, warum dann nicht auch den Serienbrief aus Excel heraus versenden? Es ist doch viel einfacher den Inhalt des Serienbriefes in  eine Tabelle zu bringen, wo die entsprechend benötigten Felder über VBA dann wunschgemäß ausgefüllt werden?
Es gibt eigentlich dabei nur ein einziges Problem, in Excel kann kein automatischer Blocksatz erzeugt werden, man muss bei der Erstellung des Serienbriefes die Zeilenlängen als Flattersatz selbst bestimmen - das ist aber nur ein einmaliger Aufwand! Ansonsten läuft das viel reibungsloser als die Vermischung mit Word - auch die Auswahl der Empfänger der Information!
1. Du hast eine Word Vorlage: G:\OF\Vorlage.docx
2. Diese Vorlage ist verknüpft mit einer Excel Datei: G:\OF\daten.xlsx
3. Du arbeitest in einer Exceldatei die alle mögliche Adressen enthällt

4. Du selektierst im Userform (im Listbox) welche Adresse benützt werden soll
5. Dann schreibt VBA die selektierte Adresse in ein neue Excel Datei und speichert die Datei als G:\OF\daten.xlsx
6. Nun öffnet VBA die Word Datie und wird die 'merge' gemacht



Code:
Sub M_snb()
   if listbox1.listindex>-1 then
     with workbooks.add
       .sheets(1).cells(1).resize(,5)=array(Listbox1.column(0),Listbox1.column(1),Listbox1.column(2),Listbox1.column(3),Listbox1.column(4))
       .saveas "G:\OF\daten.xlsx",51
       .close 0
     end with

    with getobject("G:\OF\Vorlage.docx")
       .mailmerge.execute
       .application.activeworkbook.saveas2 "G:\OF\briefe_001.docx"
       .application.activeworkbook.close 0
       .close 0
    end with
  end if
End Sub
@Glausius - Leider funktioniert das nicht, da ich vorgefertigte Serienbriefe benutzen muss. Ist leider nicht umgehbar.

@snb -  vielen Dank für deine Hilfe. Mein Code funktioniert im großen und ganzen jetzt. Es gibt nur ein Problem. Bei Ausführen muss ich immernoch über den Task Manager zum Word wechseln um dort die folgende Abfrage zu bestätigen:

"Beim Öffnen des Dokumentes wird der folgende SQL-Befehl ausgeführt:
Select* From 'Tabelle1$'
Daten aus der Datenbank werden in das Dokument eingefügt. Möchten Sie den Vorgang fortsetzen?"

Gibt es eine Möglichkeit, dieses Feld per Code mit Ja zu beantworten?
Hallo Eichi
Tante Google fragen!!!

''www.computerwissen.de/office/word/artikel/sql-fehlermeldung-beim-offnen-einer-serienbriefdatei-vermeiden.html
Gruss
Helvetier
@Helvetier Danke für den Tipp. Leider bringt mir das nichts, da die Registry vom Admin gesperrt wurde und das Dokument mehrere Benutzer nutzen sollen.
Ich brauch es also zwingend im VBA-Code.
(19.09.2017, 11:50)Eichi06 schrieb: [ -> ]Helvetier

Ich brauch es also zwingend im VBA-Code.
Hallo Eichi
Vielleicht geht es auch ohne Code. Lies mal da:
http://www.office-loesung.de/ftopic145809_0_0_asc.php

Wenn Du magst, suche ich für Dich gerne weitere Tipps in Google
Gruss
Hallo Helvetier,

wenn ich das so mache, wie es da steht, habe ich dann keinen Serienbrief mehr, sondern ein normales Word-Dokument. Ich brauch aber den Serienbrief.
Du kannst versuchen mit (Excel 2010) :


Code:
Sub M_snb() 
  CreateObject("Wscript.shell").regwrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options\SQLSecurityCheck", 0, "REG_DWORD"
End Sub
Seiten: 1 2 3 4