Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MailMerge.OpenDataSource

Forumthread: MailMerge.OpenDataSource

MailMerge.OpenDataSource
30.01.2014 18:55:34
Steinhoff
Zum Thema MailMerge:
Das Ganze geht nicht mit Angaben im SQLStatement1
( siehe Beispiel ).
Zum Ausprobieren mit weiteren Angaben im Quellcode .xlsm

EXCEL-Datei
: https://www.herber.de/bbs/user/89035.xlsm

WORD-Datei
: https://www.herber.de/bbs/user/89034.doc
Vielen Dank für jegliche Anregungen und Hilfen

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MailMerge.OpenDataSource
30.01.2014 19:41:10
Rudi
Hallo,
das solltest du in einem Word-Forum fragen.
Auch wenn du das aus Excel ausführst, musst du die Word-VBA-Syntax einhalten.
Gruß
Rudi

AW: MailMerge.OpenDataSource
30.01.2014 19:41:17
Steinhoff
Hier die VBA-Befehle ( enthalten ) im Listing
Function SerienBriefErzeugen()
'-------------------------------------------
'*diese Funktion oeffnet den Serienbrief BR-Mittelung
Dim varDatei As Variant
txtcurrentWorkbook = ActiveWorkbook.Name
txtcurrentWorkbookDir = ActiveWorkbook.Path
sFilename = txtcurrentWorkbookDir & "\" & txtcurrentWorkbook
wFilename = txtcurrentWorkbookDir & "\test.doc"
'
txtFile = Dir(sFilename)
If txtFile = "" Then
MsgBox "Die Datei existiert nicht" & vbCrLf & "Dateiname:" & sFilename, vbCritical
Exit Function
End If
' check Document >
'
Dim wordApp As New Word.Application
wordApp.Visible = True
' Word starten >
'
Dim doc As Word.Document
Set doc = wordApp.Documents.Open(wFilename, ConfirmConversions:=False, ReadOnly:=False,  _
AddToRecentFiles:=False)
' Word Document oeffnen >
'
'*Datenquelle für den Seriendruck
doc.MailMerge.OpenDataSource Name:=sFilename _
, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFilename & ";Mode=Read; _
Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Eng" _
, SubType:=wdMergeSubTypeAccess _
, SQLStatement:="SELECT * FROM [Tabelle1$]", SQLStatement1:=" WHERE `EMail` = ''"  '  And ` _
Nachname` like 'Kunde1'"
' geht, aber Ergebnis ist falsch .... , warum ?
', SQLStatement:="SELECT * FROM [Tabelle1$]", SQLStatement1:=" WHERE `EMail` = ''"  ' And [ _
Nachname] like 'Kunde1"
' geht garnicht, warum ?
', SQLStatement:="SELECT * FROM [Tabelle1$]", SQLStatement1:=" WHERE [EMail] = ''"  ' And [ _
Nachname] like 'Kunde1"
' geht erst recht nicht, warum ?
', SQLStatement:="SELECT * FROM [Tabelle1$]", SQLStatement1:=" WHERE `EMail` = '' And `Nachname` _
like 'Kunde1'"
' Datenquelle einstellen >
On Error GoTo wError
'
doc.MailMerge.Execute
' Serienbrief erzeugen >
wClose:
doc.Close
Set doc = Nothing
Exit Function
wError:
msg = "Fehler: " & Err & " - " & Error(Err)
On Error Resume Next
MsgBox msg, vbCritical, "Error"
GoTo wClose
'-------------------------------------------
End Function

Anzeige
AW: MailMerge.OpenDataSource
02.02.2014 12:40:19
Steinhoff
Ich habe das Problem lösen können.
WST
;
Anzeige

Infobox / Tutorial

MailMerge.OpenDataSource in Excel und Word


Schritt-für-Schritt-Anleitung

Um die MailMerge.OpenDataSource-Funktion in Excel und Word zu nutzen, folge diesen Schritten:

  1. Vorbereitung der Excel-Datei: Stelle sicher, dass deine Excel-Datei die benötigten Daten enthält. Diese sollten in einer Tabelle organisiert sein, die von Word abgerufen werden kann.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul erstellen: Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  4. VBA-Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Function SerienBriefErzeugen()
        Dim varDatei As Variant
        txtcurrentWorkbook = ActiveWorkbook.Name
        txtcurrentWorkbookDir = ActiveWorkbook.Path
        sFilename = txtcurrentWorkbookDir & "\" & txtcurrentWorkbook
        wFilename = txtcurrentWorkbookDir & "\test.doc"
    
        Dim wordApp As New Word.Application
        wordApp.Visible = True
    
        Dim doc As Word.Document
        Set doc = wordApp.Documents.Open(wFilename, ConfirmConversions:=False, ReadOnly:=False)
    
        doc.MailMerge.OpenDataSource Name:=sFilename, _
            Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFilename & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Eng"", _
            SubType:=wdMergeSubTypeAccess, _
            SQLStatement:="SELECT * FROM [Tabelle1$]", SQLStatement1:=" WHERE `EMail` = ''"
    
        On Error GoTo wError
        doc.MailMerge.Execute
    
        wClose:
        doc.Close
        Set doc = Nothing
        Exit Function
    
        wError:
        MsgBox "Fehler: " & Err & " - " & Error(Err), vbCritical, "Error"
        GoTo wClose
    End Function
  5. Dokumente anpassen: Achte darauf, dass die Dateinamen für die Excel- und Word-Dokumente korrekt sind.

  6. Code ausführen: Führe die Funktion SerienBriefErzeugen aus, um den Mail Merge zu starten.


Häufige Fehler und Lösungen

  • Fehler: "Die Datei existiert nicht": Überprüfe den Pfad zur Excel-Datei. Stelle sicher, dass die Datei vorhanden ist und der Pfad korrekt angegeben ist.

  • SQLStatement funktioniert nicht: Wenn du SQL-Anweisungen verwendest, achte darauf, dass die Syntax korrekt ist. Beispielsweise kann die Verwendung von Backticks (`) oder eckigen Klammern ([ ]) die Ausführung beeinflussen.

  • Word-Dokument wird nicht geöffnet: Vergewissere dich, dass der Dateiname des Word-Dokuments korrekt ist und es sich im gleichen Verzeichnis wie die Excel-Datei befindet.


Alternative Methoden

  1. Manueller Seriendruck: Du kannst den Seriendruck auch manuell über Word durchführen, indem du die Datenquelle im Word-Dokument auswählst und die gewünschten Felder einfügst.

  2. Power Query: Nutze Power Query in Excel, um Daten zu importieren und zu transformieren, bevor du sie in den Mail Merge einfügst.

  3. Datenbankverbindung: Anstelle einer Excel-Datei kannst du auch direkt eine Datenbank ansteuern, um deine Daten für den Mail Merge zu verwenden.


Praktische Beispiele

  • Seriendruck mit E-Mail-Adressen: Du kannst eine Liste von E-Mail-Adressen in deiner Excel-Datei haben und diese für personalisierte E-Mail-Benachrichtigungen nutzen.

  • Kundendaten aus einer Tabelle: Nutze die MailMerge.OpenDataSource-Funktion, um Kundendaten aus einer Excel-Tabelle für Briefe oder Rechnungen zu verwenden.

SQLStatement:="SELECT * FROM [Kunden$]", SQLStatement1:=" WHERE `Status` = 'Aktiv'"

Tipps für Profis

  • Verwende strukturierte Daten: Achte darauf, dass deine Excel-Daten gut strukturiert sind, um Fehler beim Mail Merge zu vermeiden.

  • Dokumentation lesen: Lies die offizielle Dokumentation zu MailMerge und OpenDataSource, um alle Möglichkeiten und Optionen zu verstehen.

  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um mögliche Fehlerquellen schnell zu identifizieren.


FAQ: Häufige Fragen

1. Was ist MailMerge.OpenDataSource? MailMerge.OpenDataSource ist eine VBA-Funktion, die in Word verwendet wird, um eine Datenquelle für den Seriendruck zu öffnen, typischerweise aus einer Excel-Datei.

2. Welche Excel-Version benötige ich? Die beschriebenen Methoden funktionieren in Excel 2010 und späteren Versionen. Stelle sicher, dass du auch über Word verfügst, um den Mail Merge auszuführen.

3. Kann ich mehrere Datenquellen verwenden? Ja, du kannst mehrere Datenquellen in deinem Word-Dokument verwenden, indem du verschiedene OpenDataSource-Aufrufe machst.

4. Was tun, wenn der Mail Merge nicht funktioniert? Überprüfe alle Verbindungen und die verwendeten SQL-Anweisungen. Achte darauf, dass die Excel-Datei geöffnet ist und keine Berechtigungsprobleme bestehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige