14.11.2018, 13:16
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
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