Merci. Jetzt bin ich im Bilde.
Das Problem ist, daß die Methode OpenDataSource unter Word Version 9.0 anders läuft als unter 10.0. Unter 9.0 enthält der Connection-Parameter den Namen der Tabelle, die die Quelldaten enthält. Unter 10.0 kann dieser Parameter leer sein (sofern man die Datei angegeben hat) und in den SQLStatement-Parameter z.B. "SELECT * FROM `Tabelle1$`" muss.
Der Agent "(Korrespondenz\Brief)|ComposeLetter" der Letter Engine enthält im Script "Initialize" das Kommentar "link to data source" (Zeile 120 ca). Dort wird die Versionsabfrage gemacht, da unter Word 2000 die Verknüpfung der Datenquelle noch etwas anders läuft.
Die Zeile
Elseif word.Version = wdXP Then
in folgende Zeile abändern:
Elseif word.Version = wdXP Or word.Version = "11.0" Or word.Version = "12.0" Then
Hi Kinnings,
hab nen Bug gefunden:
Enthät die Wordvorlage (*.dot) nur ein MergeField kommt es beim Erstellen eines Briefes zum Fehler "Variant does not contain a container".
Problem:
Range.Value in Excel ist bei mehreren Zellen ein Array und bei einer Zelle ein leerer Variant.
Athock-Bugfix:
Agent "(Korrespondenz\Brief)|ComposeLetter" der Letter Engine öffnen.
Procedur Initialize öffnen.
Im Bereich "### create data source ###" in Zeile 71 ca. die Zeilen
If Isarray(var_eval) Then
var_row(1, int_column) = Join(CString(var_eval), Chr(10))
Else
If Isempty(var_eval) Then var_row(1, int_column) = "" Else var_row(1, int_column) = var_eval
End If
ändern in
If Isarray(var_eval) Then var_eval = Join(CString(var_eval), Chr(10))
If Isempty(var_eval) Then var_eval = ""
If Isarray(var_row) Then var_row(1, int_column) = var_eval Else var_row = var_eval