Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Textmarke ansprechen in Seriendruckdokument

Begonnen von tragger, Februar 13, 2013, 22:52:06

⏪ vorheriges - nächstes ⏩

tragger

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...

database

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

tragger

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?? ???

ebs17

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
Mit freundlichem Glück Auf!

Eberhard

69bruno

Und man kann in das Formularfeld von Word mit

activedocument.formfields("txtDatum").result = .......

das gewünschte einfügen.
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

tragger

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...

ebs17

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
Mit freundlichem Glück Auf!

Eberhard

69bruno

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.


If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If