Connection String zu Excel-Tabelle in Word Serienbrief funktioniert nicht 100%
#1
Hallo allerseits,

leider bin ich bei folgendem Problem etwas ratlos. 

Zur Situation: Ich habe eine einfache Excel-Tabelle mit Adressen und möchte diese in einem Word-Serienbrief verwenden. Das funktioniert auch im Prinzip. 
Nun ist es so, dass sowohl die Excel-Tabelle, als auch das Word-Dokument im gleichen Verzeichnis auf einem USB-Stick gespeichert sind. Grund dafür ist, dass ich dieses kleine Tool an verschiedenen Rechnern benutzen möchte. Da das USB-Laufwerk je nach Rechner zum Teil eine andere Laufwerksbezeichnung erhält, habe ich die Verbindung zwischen Word und Excel, den Connection String, etwas modifiziert. So wird beim Aufrufen des Word-Dokuments der eigene Pfad ermittelt und dann dort nach der Excel-Tabelle gesucht, um eine Verbindung herzustellen. 

Problem: Das klappt leider nicht richtig. An verschiedenen Rechnern muss ich jedesmal die Datenquelle für den Serienbrief manuell auswählen, obwohl das ja eigentlich per Makro erfolgen soll. Im Makro ist noch eine weitere kleine SQL-Abfrage, die klappt wiederum immer. 

Für Hinweise bzw. Hilfe bei der Lösung des Problems wäre ich sehr dankbar.

Viele Grüße
john_p

Hinweis: Den Connection String habe ich durch das Aufzeichnen eines Makros erhalten.

Sub Document_Open()
    
Dim PFAD, QUELLE As String
    Dim POS, I As Integer



    PFAD = ThisDocument.Path            ' aktuelles Verzeichnis ermitteln
    
    QUELLE = PFAD & "\Schülerdatenbank.xlsm"     ' mit Backslash!
'
    ActiveDocument.MailMerge.OpenDataSource Name:= _
       QUELLE, 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=" & QUELLE & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Databa" _
        , SQLStatement:="SELECT * FROM `Adressen$`", SQLStatement1:=" WHERE Name<>'' ", SubType:= _
        wdMergeSubTypeAccess
End Sub
Top
#2
Hallöchen,

kann es sein, dass Deine SELECT-Anweisung nicht korrekt ist? Da müsste glaube die Tabelle oder der Bereich der Abfrage in der Excel-Datei rein und nicht nochmal die QUELLE.

Beispiel aus meiner \word\Settings.xml



Mal eine Zusatzfrage - wird das Word-Dokument beim Anwender geändert?
Wenn nicht, könnte man die Abfrage eventuell "hacken" Smile Wenn man die Word-Datei *.doc? in *.zip umbenennt findet man in \word und \word\_rels je eine Settings-Datei mit Angaben zur Quelle.
Da kann man die Pfadangabe relativieren. Aber wichtig - vorher eine Sicherung anlegen falls es nicht klappt … Und man sollte die Datei mit Schreibschutz versehen, damit der Anwender nicht versehentlich was speichert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste