Discussion:
Serienbrief über VBA von einer Excel-Tabelle
(zu alt für eine Antwort)
Kuranis
2007-12-18 11:54:01 UTC
Permalink
Ich habe folgendes Problem:

Ich benötige einen Seriendruck von Tagesblättern mit dem Tagesabhängig
zuständigen. Ich habe ein Excel-Workbook mit den Zuständigen und den
dazugehörigen Datum als einzelne Monatstabellen für das gesamte Jahr erstellt.
Ich habe schon einiges ausprobiert und bin jetzt bei folgendem
OpenDataSource-String:

.OpenDataSource Name:=localpath & "Tabelle.xls", ConfirmConversions:=False,
ReadOnly:=True, LinkToSource:=True, AddToRecentFiles:=False,
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="",
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto,
Connection:="Tabelle " & BlattName & "$", SQLStatement:="",
SQLStatement1:="", SubType:=wdMergeSubTypeOther

Dabei ist LocalPath der Pfad zur Datei in einem Unterverzeichnis von "Eigene
Dateien" und BlattName ist der Name des für den betreffenden Monats zu
nutzenden Tabellenblattes. Jedes Blatt hat eine Kopfzeile und darunter die
Daten.

Wenn ich jedoch dieses Statement ausführe, öffnet sich in Word ein Fenster,
in dem ich die zutreffende Tabelle auswählen soll. Genau das möchte ich aber
nicht haben, da so VBA auf den Abschluß des OpenDataSource-Statements wartet.

Wie kann ich nun das Statement verändern, damit VBA die korrekte Tabelle im
OpenDataSource Statement bereits auswählt und mir das Auswahlfenster erspart
bleibt?

Gruß

Marcel
Dr. Eckehard Pfeifer
2007-12-18 12:33:26 UTC
Permalink
Hallo, vermutlich musst Du noch ein SQLStatement1 angeben. Am besten,
Du zeichnest in Word ein Makro auf. Dann siehst Du, was fehlt.
--
MfG EP
Entwicklung - Beratung - Training (www.dr-e-pfeifer.net)
XL-Funktionsverzeichnis (ISBN: 3860636898)
MS Office 2003 - Das Entwicklerbuch (ISBN 3-86063-688-X)
Kuranis
2007-12-18 12:48:00 UTC
Permalink
Auf die Idee mit dem Makro bin ich ja schon gekommen und daher kommt das
OpenDataSource-Statement ja auch. Nur die Sache mit der Auswahl der Tabelle
habe ich noch mit eingefügt. Aber anscheinend funktioniert das nicht. Auch
das aufgenommene Makro gibt mir bei Wiedergabe das Auswahlfenster.

Stimmt denn das OpenDataSource-Statement soweit?

Gruß

Marcel
Dr. Eckehard Pfeifer
2007-12-18 13:51:02 UTC
Permalink
Hallo, es ist glaube ich OK. Das SQLStatement1 sollte etwas beinhalten
wie "Select * from `Tabelle1`".
--
MfG EP
Entwicklung - Beratung - Training (www.dr-e-pfeifer.net)
XL-Funktionsverzeichnis (ISBN: 3860636898)
MS Office 2003 - Das Entwicklerbuch (ISBN 3-86063-688-X)
Kuranis
2007-12-18 14:19:01 UTC
Permalink
Leider funktioniert das auch nicht. Ich bekomme dann ein leeres Auswahlfenster.

Gruß

Marcel
Dr. Eckehard Pfeifer
2007-12-18 14:48:59 UTC
Permalink
Hallo, passe mal das folgende auf Deine Voraussetzungen an:

ActiveDocument.MailMerge.OpenDataSource Name:="Z:\Mappe1.xls", _
Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Z:\Mappe1.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;",
_
SQLStatement:="SELECT * FROM `Tabelle1$`",
SubType:=wdMergeSubTypeAccess
--
MfG EP
Entwicklung - Beratung - Training (www.dr-e-pfeifer.net)
XL-Funktionsverzeichnis (ISBN: 3860636898)
MS Office 2003 - Das Entwicklerbuch (ISBN 3-86063-688-X)
Kuranis
2007-12-18 16:10:03 UTC
Permalink
Ich habe jetzt das Problem gefunden.
Excel verwaltet für Tabellen 2 Namen, den Blattnamen und den CodeNamen.
Beim SQL-Statement muß der CodeName stehen. Diese kann aber nicht per VBA
geändert werden, sondern nur in VBA-Umgebung bei geöffneter Tabelle in den
Eigenschaften. Nachdem ich korrekt die Namen gesetzt habe, funktioniert
OpenDataSource korrekt und fragt nicht nach einem Tabellennamen.

Gruß

Marcel

Loading...