Hallo Leute,
ich habe einen Serienbrief erstellt, der auch problemlos funktioniert. Nun möchte ich noch mindestens eine Textmarke ansprechen. Hier fehlt mir die Idee der Umsetzung. Habe aus einem anderen Dokument Copy und Paste probiert aber das ist misslungen. HIer der Code:
Set WordApp = CreateObject("Word.application")
With WordApp
.Application.Visible = True
.Application.Documents.Add Template:=Vorlage, NewTemplate:=False, DocumentType:=0
Set myMerge = WordApp.ActiveDocument.MailMerge
If myMerge.State = wdMainAndSourceAndHeader Or _
myMerge.State = wdMainAndDataSource Then
With myMerge.DataSource
myMerge.MainDocumentType = wdFormLetters
myMerge.OpenDataSource _
Name:=quelle, _
LinkToSource:=True, AddToRecentFiles:=False, _
Connection:="tmpqryRechnungenSeriendruck"
End With
' Zum zusätzliche Ausgeben aller Dokumente
'myMerge.Execute
End If
--> .bookmarks("Datum").range = Date
End With
' Verwendete Objects wieder freigeben
Set WordApp = Nothing
Hier kommt nur Laufzeitfehler 438 :'(
Ich hoffe, dass mir jemand helfen kann...
Hallo,
blau in den Wind gereimt - versuche mal ...
.bookmarks("Datum").range.Text = Date
bzw.
'im Prozedurkopf
Dim rng as Range
'dann ...
With WordApp
...
..
.
End If
Set rng = .Bookmarks("Datum").Range
rng.Text = Date
End With
HTH
Der erste Vorschlag bringt leider nix.
Beim zweiten Vorschlag geht kein Kompilieren. Fehler ist Benutzerdefinierter Typ nicht definiert bei der Deklaration.
Hier noch der Nachtrag zu Laufzeitfehler 438: Objekt unterstützt die Eigenschaft der Methode nicht.
Weitere Ideen, Vorschläge oder gar die Lösung?? ???
Gegenfrage: Warum soll es ausgerechnet eine Textmarke sein?
Erstens halte ich das Mischen von Textmarken und Seriendruck schon rein gefühlsmäßig für problematisch.
Zweitens ist eine Textmarke nur einmal nutzbar, es sei denn, da sind intern Referenzen aufgebaut. Wie sich das bei der Vervielfältigung der Ursprungsvorlage (=> Execute) funktionieren soll, weiß wohl keiner.
Praktisch könnte man ein zusätzliches Seriendruckfeld verwenden. In die Datenquelle zusätzlich das heutige Datum zu platzieren sollte nun kein unüberwindbares Problem sein.
Außerdem/alternativ gibt es auch in Word Datenfelder, wo man einfach das Erstellungsdatum fixieren kann.
MfGA
ebs
Und man kann in das Formularfeld von Word mit
activedocument.formfields("txtDatum").result = .......
das gewünschte einfügen.
Der Weg über das Formularfeld klingt vielversprechend. Unter Entwichlertools habe ich nun ein Steuerelement Text oder auch Rich-Text eingefügt. WIe benenne ich dieses in Word 2007? Über Egenschaften? Eine Benennung ist ja zwingend nötig, damit ich dieses aus access ansprechen kann.
Wo muss ich die Befüllung veranlassen? Genau so, wie von 69bruno gesagt an der Stelle, die ich in meiner Problembeschreibung markiert hatte?
Werde leider bisher nicht ganz schlau daraus...
Zu Formularfeldern kennt sich Bruno aus.
Ich würde Word selber arbeiten lassen:
Stichwort für Suche (weil versionenabhängig): Erstellungsdatum in Word-Dokumente einfügen
MfGA
ebs
Ja,
in den Eigenschaften gibt man dem Feld eine Textmarke, das ist dann auch der Name des Feldes. Das Feld ist sozusagen durch die Textmarke umschlossen.
Und einfügen würde ich es natürlich nach dem end with, denn es hat ja mit dem .with nichts zu tun.
Hinweis: Auch wenn es ein Formfield ist, brauchst Du keinen Schutz auf dem Dokument anzuwenden. Per VBA kannst Du das Feldergebnis auch im ungeschützten Modus setzen.