Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
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

kleines Problem bei Serienbrief aus Excel

kleines Problem bei Serienbrief aus Excel
09.12.2018 08:47:52
Peter
Guten Morgen ihr Excelspezialisten,
leider klappt die Makroaufzeichnung für Filter in Word nicht.
Ich habe eine Exceldatei aus welcher ich Word öffne. Dies funktioniert einwandfrei.
Das Problem liegt nur im Bereich von "SQLStatement1:="Where `W`=W and `Zusagen#(x)`=1", SubType:=wdMergeSubTypeAccess".
Ich hätte hier gerne zwei Varianten:
1. "Where Spalte W gleich W and Spalte Zusagen (x) gleich 1
2. Spalte als Variable und Wert als Variable aus Userform.Textbox
Besten Dank für eure Hilfe.
Gruss
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kleines Problem bei Serienbrief aus Excel
09.12.2018 10:54:07
Herbert
Hallo Peter,
hast du schon mal überlegt, deine Briefe nicht mit Word, sondern mit Excel zu erstellen? Ich mache das schon seit vielen Jahren so und muss mich deshalb nicht mehr mit diesem "W..." rumärgern.
Servus
AW: kleines Problem bei Serienbrief aus Excel
09.12.2018 10:59:39
Peter
Hallo Herbert,
ich habe damit keinerlei Erfahrung.
Wie erstellst Du diesen Serienbrief?
Wie steuerst Du diesen Serienbrief?
In diesem Fall benötige ich dies für Etiketten.
Hast Du mir hierzu bitte eine Musterdatei.
Den Punkt1 meiner Anfrage habe ich gelöst, indem ich die Spalte von Zusagen (x) auf Zusagen umgeschrieben haben.
An was ich monentan mir die Zähne ausbeise ist eine Variable:
"SQLStatement1:="Where `W`=W
W soll UF.Textbox sein.
Gruss
Peter
Anzeige
AW: kleines Problem bei Serienbrief aus Excel
09.12.2018 11:17:02
Herbert
Hallo Peter,
zuerst musst du das Layout des Briefes in einem Excel-Arbeitsblatt erstellen und die Seitenränder prüfen.
Dann musst du die alle Felder, die du aus deiner Adressenliste verwenden willst, in das Layout an die gewünschte Position positionieren.
Dann musst du ein Listenfeld mit den Adressen erstellen.
Danach bestimmst du die Zellverknüpfung, also die Zelle, in die der Listenindex, des angeklickten Listeneintrages, eingefügt wird.
Anhand dieser Zahl, die dann in der Zellverknüpfung steht, kannst du dann mit einer Formel, etwa so:
=INDEX("Eine_AdressSpalte";Die_Zellverknüpfung)

den gewünschten Datensatz in deinem Brief anzeigen.
Noch Fragen? Ask me!
Servus
Anzeige
AW: Serienbrief aus Excel gelöst offen Brief in Ex
09.12.2018 11:28:37
Peter
Hallo Herbert,
das mit der Variablen habe ich jetzt gelöst:
Option Explicit
Option Private Module 'damit kann man die Prozeduren nicht per Alt+F8 starten
'interne Word-Konstanten in Excel nachbilden
Const wdOpenFormatAuto As Integer = 0
Const wdFormLetters As Integer = 0
Const wdSendToNewDocument As Integer = 0
Const wdSendToPrinter As Integer = 1
Const wdDefaultFirstRecord As Integer = 1
Const wdDefaultLastRecord As Integer = -16
Const wdMergeSubTypeAccess As Integer = 1
Const wdFirstDataSourceRecord As Integer = -6
Const wdFormatPDF As Integer = 17
Const wdPrintAllDocument As Integer = 0
Const wdFormatXMLDocument As Integer = 12
Const wdToggle As Long = 9999998
'hier geht es los!
Sub Start_SB_Abrechnung2()
Dim oWrd As Object, oDoc As Object
Dim wb As Workbook, ws As Worksheet
Dim strSheetName As String, xDocV As String, xSql As String
'variable für Sqlstatment1
Dim strSpalte As String
strSpalte = UF_EMails.TextBox2.Value
On Error Resume Next
'prüfen, ob Word schon aktiv ist
Set oWrd = GetObject(, "Word.Application")
If oWrd Is Nothing Then
'wenn nicht, dann Word erst malö öffnen
Set oWrd = CreateObject("Word.Application")
End If
On Error GoTo 0
If oWrd Is Nothing Then
MsgBox "Auf diesem Rechner ist M$-Word nicht installiert!", vbSystemModal + 16, "Hinweis. _
Exit Sub
End If
'diese Arbeitsmappe
Set wb = ThisWorkbook
'1. Tabellenblatt
Set ws = wb.Worksheets(1)
strSheetName = ws.Name
'Ort der Word-Vorlage Serie3nbrief auf dem Datenträger
'hierin befinden sich die {MergeField ...} und der sonstige Brieftext
Set oDoc = oWrd.Documents.Add(Template:=xDocV, NewTemplate:=False, DocumentType:=0)
oWrd.Visible = True
'aktiviert die Word - Datei und öffnet diese maximal
oWrd.Activate
oWrd.WindowState = wdWindowStateMaximize
'neugeöffnete Datei in Serienbrief-Hauptdokument umwandeln
oDoc.MailMerge.MainDocumentType = wdFormLetters
'Fatenfeld-Auswahl in SQL-Schreibweise
xSql = "SELECT * FROM [Tabelle1$]"
'funktioniert mit 2 Filter Test Variable
oDoc.MailMerge.OpenDataSource Name:=wb.FullName _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & wb.FullName & _
"; Mode=Read;Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1;""" _
, SQLStatement:=xSql, SQLStatement1:="Where (" & strSpalte & "='" & strSpalte & "') and  _
`Zusagen`='1'", SubType:=wdMergeSubTypeAccess
'Hinweis
'ab Office 2007 sollte der hier angewendete Treiber benutzt werden
'bei *.xlsm als Datenquelle
'";Extended Properties=""Excel 12.0 Macro; HDR=YES; IMEX=1"""
'bei *.xlsx als Datenquelle
'";Extended Properties=""Excel 12.0 Xml; HDR=YES; IMEX=1"""
'alter Daten-Treiber - Bitte nur bei Zugriff auf *.xls-Dateien (bid Excel 2003)  _
benutzen
'"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=user;Data Source=" & wb. _
FullName & "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB" _
', SQLStatement:="SELECT * FROM `2017$`", SQLStatement1:="", SubType:= _
'wdMergeSubTypeAccess
'    'Umschalten auf Datenansicht
'    oDoc.MailMerge.ViewMailMergeFieldCodes = wdToggle
'beide Objektvariablen für Word ins Nirvana schicken
Set oDoc = Nothing
Set oWrd = Nothing
'Das fertige Word-SB-Hauptdockument ist noch geöffnet aber nicht gespeichert!
'    MsgBox "F e r t i g!", vbSystemModal + 64, "Hinweis...'"
'Achtung!!! Excel darf nicht geschlossen werden, da sonst die Daten in Word fehlen
'Excel-Datei und Excel schliessen
'    Call Excel_beenden_mit_Prüfung
End Sub

Nun jedoch zu den Briefen aus Excel.
Das hast Du wunderbar beschrieben - aber ich bin kein Profi.
Hier würde ich schon eine Musterdatei benötigen. Vielleich könntest Du mir eine kleine Datei basteln, vielleicht mit bis zu funf Spalten.
Die Idee hatte ich auch schon aber bisher noch nichts geeignetes gefunden.
Gruss
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige