Office: übergabe an Word mit Textmarken

Helfe beim Thema übergabe an Word mit Textmarken in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, vermutlich ist mein Problem banal, aber wenn man keine Ahnung hat ... mein VBA funktioniert mittlerweile so das sich Word öffnet und... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von MarkusBH, 7. August 2014.

  1. MarkusBH Neuer User

    übergabe an Word mit Textmarken


    Hallo Leute,
    vermutlich ist mein Problem banal, aber wenn man keine Ahnung hat ...

    mein VBA funktioniert mittlerweile so das sich Word öffnet und die Textmarken auch befüllt, aber nicht mit den gewünschten Daten, sondern mit dem was zwischen den "" angegeben ist, also Vorname = Vorname

    mein VBA

    Private Sub Befehl160_Click()
    Dim wdApp As Object, wdDoc As Object

    Set wdApp = CreateObject("word.application") ' Word öffnen
    ' Word sichtbar machen
    wdApp.Visible = True
    ' Dokument auf Basis der Vorlage
    Set wdDoc = wdApp.Documents.Add("C:\Users\Chai 2\Documents\Benutzerdefinierte Office-Vorlagen\Lebenslauf.dotx")
    ' Ein Wert aus Access in eine Textmarke Namens Vorname
    wdDoc.Bookmarks("Vorname").Range = "Vorname"
    ' Ein Formularfeld aus Access in eine Textmarke
    wdDoc.Bookmarks("Nachname").Range = "Nachname"
    wdDoc.Bookmarks("GebDatum").Range = "GebDatum"
    wdDoc.Bookmarks("Zivilstand").Range = "Zivilstand"
    wdDoc.Bookmarks("Nationalität").Range = "Nationalität"
    wdDoc.Bookmarks("Adresse").Range = "Adresse"
    wdDoc.Bookmarks("PLZ").Range = "PLZ"
    wdDoc.Bookmarks("Wohnort").Range = "Wohnort"
    wdDoc.Bookmarks("Mobil").Range = "Mobil"
    wdDoc.Bookmarks("Mail").Range = "Mail"
    End Sub

    für einen kleinen Tipp wäre ich dankbar

    ach ja, ich nutze Access 2013 ...

    besten Dank im Voraus schon mal

    Markus
     
    MarkusBH, 7. August 2014
    #1
  2. Exl121150 Erfahrener User
    Hallo Markus,

    mir ist leider nicht wirklich klar, was du damit meinst. Deshalb schicke ich dir 2 Varianten als Muster.

    Variante1: Im ACCESS-Programmcode sind die Inhalte der WORD-Textmarken fix vorgegeben, zB:
    Code:
    Private Sub Befehl160_Click()
    
     Dim wdApp As Object, wdDoc As Object
     Set wdApp = CreateObject("word.application")
     
     With wdApp
       .Visible = True
       Set wdDoc = .Documents.Add("C:\Users\Chai 2\Documents\Benutzerdefinierte Office-Vorlagen\Lebenslauf.dotx")
     End With
     
     With wdDoc
       .Bookmarks("Vorname").Range = "Markus"
       .Bookmarks("Nachname").Range = "Berghuber"
       .Bookmarks("GebDatum").Range = "12.11.1989"
       .Bookmarks("Zivilstand").Range = "Verheiratet"
       .Bookmarks("Nationalität").Range = "Österreich"
       .Bookmarks("Adresse").Range = "Linzer Straße 12"
       .Bookmarks("PLZ").Range = "4840"
       .Bookmarks("Wohnort").Range = "Vöcklabruck"
       .Bookmarks("Mobil").Range = "0664/17345569"
       .Bookmarks("Mail").Range = "markus.BH@aol.com"
     End With
    End Sub
    
    Variante2: Vielleicht besteht das eigentliche Problem nicht in einer funktionierenden WORD-Ausgabe, sondern in einer korrekten ACCESS-Programmierung.
    Du wirst wahrscheinlich ein ACCESS-Formular angelegt haben, in das du einen Befehlsbutton namens "Befehl160" eingefügt hast.
    Ferner hast du in diesem Formular mehrere Eingabefelder mit folgenden Namen: "Vorname", "Nachname", "GebDatum", ..., "Mail" eingefügt.
    Nun willst du, sobald du auf den Button "Befehl160" klickst, dass
    1) die WORD-Applikation startet
    2) mithilfe der WORD-Dateivorlage "Lebenslauf.dotx" ein neues WORD-Dokument geöffnet wird,
    3) in die Textmarken dieses WORD-Dokumentes die Inhalte der Felder des ACCESS-Formulars, in dem sich der Button befindet, ausgegeben werden.
    Dann müsste vom Prinzip her diese Codevariante zum Einsatz kommen:
    Code:
    Private Sub Befehl160_Click()
    
     Dim wdApp As Object, wdDoc As Object
     Set wdApp = CreateObject("word.application")
     
     With wdApp
       .Visible = True
       Set wdDoc = .Documents.Add("C:\Users\Chai 2\Documents\Benutzerdefinierte Office-Vorlagen\Lebenslauf.dotx")
     End With
     
     With wdDoc
       .Bookmarks("Vorname").Range = Me!Vorname
       .Bookmarks("Nachname").Range = Me!Nachname
       .Bookmarks("GebDatum").Range = Me.Controls("GebDatum").Value 'Vollständige Schreibweise: siehe Punkt 1)
       .Bookmarks("Zivilstand").Range = Me!Zivilstand
       .Bookmarks("Nationalität").Range = Me!Nationalität
       .Bookmarks("Adresse").Range = Me!Adresse
       .Bookmarks("PLZ").Range = Me!PLZ
       .Bookmarks("Wohnort").Range = Me!Wohnort
       .Bookmarks("Mobil").Range = Me!Mobil
       .Bookmarks("Mail").Range = Me!Mail
     End With
    End Sub
    
    Das ACCESS-Formular, in dessen Codemodul du dich befindest, ist über den Objektzeiger "Me" erreichbar. Über diesen Objektzeiger sind dann alle im Formular enthaltenen Felder erreichbar und zwar auf mehrere verschiedene Arten:
    1) Me.Controls("Vorname").Value
    2) Me!Vorname.Value
    3) Me!Vorname

    ad 2) Wird also die Collection-Angabe "Controls" weggelassen, muss nach dem Objektzeiger "Me" statt des Punktes das Rufzeichen verwendet werden und zwar dann ohne nachfolgende Anführungszeichen.
    ad 3) Da bei den Formularfeldern die Standard-Eigenschaft die Eigenschaft "Value" ist, so kann sie auch weggelassen werden (weil sie eh automatisch ergänzt wird, falls sie fehlt).
     
    Zuletzt bearbeitet: 8. August 2014
    Exl121150, 8. August 2014
    #2
    1 Person gefällt das.
  3. MarkusBH Neuer User
    Danke, es war Variante 2. Es war lag im Prinzip am !Me

    Danke das hat mir geholfen

    Lieben Gruss
    Markus Bhend
     
    MarkusBH, 9. August 2014
    #3
  4. GiTo79 User

    übergabe an Word mit Textmarken

    Moin moin in die Runde, der Eintrag ist zwar schon etwas her, aber mit dieser Hilfe habe ich die Lösung auch für mein Problem gefunden. Dafür ersteinmal ein Dankeschön, gerade an Anton Exl, alias Exl121150.

    Eine Frage aber habe ich trotzdem. Was muss ich machen, damit die Word-Instanz im Vordergrund geöffnet wird. Jetzt erscheit sie im Hintergrund und ich muss auf der Taskleiste Word auswählen.

    Liebe Grüße

    Tobias
     
  5. Exl121150 Erfahrener User
    Hallo,

    auf die Word.Application-Instanz die Activate-Methode anwenden (siehe Code-Zeile nach "Set wdDoc = ...")
    Code:
    Private Sub Befehl160_Click()
    
     Dim wdApp As Object, wdDoc As Object
     Set wdApp = CreateObject("Word.Application")
    
     With wdApp
       .Visible = True
       Set wdDoc = .Documents.Add("C:\Users\Chai 2\Documents\Benutzerdefinierte Office-Vorlagen\Lebenslauf.dotx")
       .Activate
     End With
    
     With wdDoc
       .Bookmarks("Vorname").Range = Me!Vorname
       .Bookmarks("Nachname").Range = Me!Nachname
       .Bookmarks("GebDatum").Range = Me.Controls("GebDatum").Value 'Vollständige Schreibweise: siehe Punkt 1)
       .Bookmarks("Zivilstand").Range = Me!Zivilstand
       .Bookmarks("Nationalität").Range = Me!Nationalität
       .Bookmarks("Adresse").Range = Me!Adresse
       .Bookmarks("PLZ").Range = Me!PLZ
       .Bookmarks("Wohnort").Range = Me!Wohnort
       .Bookmarks("Mobil").Range = Me!Mobil
       .Bookmarks("Mail").Range = Me!Mail
     End With
    End Sub
    
     
    Exl121150, 2. Dezember 2021
    #5
    1 Person gefällt das.
  6. GiTo79 User
    Moin moin noch einmal in die Runde. Mit dem VBA und der Übergabe an Word hat alles super funktioniert. Zu Hause auf dem heimischen Rechner im localen Bereich. Nun das ganze ins betriebliche Netzwerk gespielt, den Links der Vorlagen angepasst und nun, die Datenbank arbeitet wie vorher ohne Probleme, nur wenn ich die Datenübergabe an Word durchführe, macht er dieses ohne Probleme, aber die Datenbank meldet Laufzeitfehler und schließt sich. An was könnte es event. liegen?

    Liebe Grüße
     
  7. derArb hat Ahnung
    Hallo GiTo79,
    Benutzt Du im Betrieb eine Vollversion oder eine Runtime? Dein Fehler riecht nach Runtime.
    Ändere doch mal die Extension Deiner DB zuhause von .accdb in .accdr und schau, ob
    bei dieser Version dann dasselbe passiert. Prinzipiell ist zu raten, eine Fehlerabfangroutine einzubauen.
     
  8. GiTo79 User

    übergabe an Word mit Textmarken

    Hallöchen aus dem kalten Norden,
    privat nutze ich Office 365 und habe alles lokal auf der Festplatte abgelegt. Da läuft es ohne Probleme. Auf Arbeit liegt das ganze auf einem Netzlaufwerk. Die Verknüpfungen auf Dokumente mit Hyperlink funktionieren ohne Probleme. Nur bei der Übergabe der Daten an Word gibt es hier die Probleme.
    Die Datenbank führt alles aus was sie machen soll. Erzeugt aus der Wordvorlage ein Worddokument und trägt hier die Daten in die Textmarken ein. Wenn alles erledigt ist, kommt aber obige Meldung aus meinem letzten Post und die Datenbank schließt sich. Haben das ganze auch mit einer Vollversion auf einem anderen Rechner versucht, hier tritt das gleiche Problem auf. Denke es wird am verschlüsselten Netzwerk liegen, bin wir aber nicht ganz sicher dabei.

    Wie meinst Du das mit der Fehlerabfangroutine?

    Liebe Grüße und vielen Dank, Tobias
     
  9. GiTo79 User
    Hey derArb. So Fehler wurde gefunden. Habe einen Textmarker noch in der Formel gehabt, der in der Vorlage aber gar nicht vorhanden ist und weiterhin eine Leerzeile eingefügt. Jetzt läuft es.

    Vielen Dank trotzdem für die Mühe. Gruß Tobias
     
  10. GiTo79 User
    Eine kurze Frage habe ich trotzdem noch, da mir keine Lösung einfällt. Ich wollte einen Textmarker wiederholen. Also im Kopfbereich steht der Nachname und bei einem Unterschriftsfeld soll auch der Nachname ausgefüllt werden. NNun habe ich gelesen, das der Textmarker nur einmal funktioniert und wenn man ihn wiederholen möchte, mit Ref arbeitet. Leider klappt es überhaupt nicht. Habe die Wordvorlage geöffnet, über Schnellbaustein -> Feld -> Ref den Textmarker Nachnamen ausgewählt, aber er übernimmt es nicht. Glaub wenn ich dafür die Lösung gefunden habe, oder bekommen habe, dann habe ich alles geschafft. Smile

    Liebe Grüße
     
  11. Exl121150 Erfahrener User
    Hallo,

    normale Textmarken können nur einmal befüllt werden, dann sind sie verschwunden. Das ist auch das Problem beim Ref-Feld, um die Unterschrift-Namen auszufüllen, denn zu diesem Zeitpunkt existiert die Textmarke "Nachname" nicht mehr, da sie vorher befüllt wurde und somit ab diesem Zeitpunkt nicht mehr enthalten ist.

    Um dieses Problem zu umgehen, habe ich eine kleine Objektklasse namens "KlasseTextMarke" entworfen, die nur eine Eigenschaft (namens "Textmarke") besitzt, die gelesen und beschrieben werden kann. In der Schreib-Eigenschaft ist dabei der Mechanismus gekapselt, der dafür sorgt, dass die betreffende Textmarke nach dem Befüllen mit einem Wert nicht verloren geht und somit beliebig oft zur Verfügung steht.
    Dieses Objekt ist im Klassenmodul "KlasseTextMarke" enthalten.

    Wie dieses Objekt verwendet werden kann, habe ich im enthaltenen Formular "UserForm1" gezeigt, welches über den im Word-Dokument enthaltenen Button "UserForm1 anzeigen" aufgerufen werden kann.
    Dieses Objekt greift dabei auf die Auflistung "ActiveDocument.Bookmarks" zu.

    In der beiliegenden WinZip-Datei "GiTo79_Buchmarke.zip" ist die Word-Datei "GiTo79_Buchmarke.docm" enthalten.
     
    Exl121150, 8. Dezember 2021
    #11
    1 Person gefällt das.
  12. GiTo79 User
    Hey liebe Formengemeinde. Nach dem alles mit der Textübergabe klappt soweit, ist mir eine Sache aufgefallen, für die ich keine Lösung finde.
    Ich habe in meinem Formular ein Kombifeld mit den Namen von Bearbeitern, der aus einer zweiten Tabelle sich gezogen wird. Versuche ich jetzt dieses Feld in die Textmarke von Word zu geben, steht hier nicht der Name, sondern die AutoID.

    Ne Lösung jemand?

    Liebe Grüße und besinnliche Tage

    Tobias
     
  13. GiTo79 User

    übergabe an Word mit Textmarken


    Hey liebe Hilfegeber. Ich nutze den o.g. Code um von Access die Daten in eine Wordvorlage weiterzugeben. Habe leider aber das Problem, wenn in Access ein oder mehrere Felder nicht befüllt sind, dass dann die Übergabe nicht klappt und die Textmarke in der Vorlage leer bleibt.

    Beispiel bei o.g. Code:

    Vroname und Nachname ist geflegt, Zivilstand aber in Access nicht, dann werden alle anderen Wordmarken trotz Inhalt nicht gefüllt.

    Jemand event eine Idee? LG Tobias
     
  14. Exl121150 Erfahrener User
    Hallo,

    Was soll das heißen?
    1) Dass du im Worddokument eine Textmarke namens "Zivilstand" hast und dieser keinen Wert zuweist, weil im Access-Projekt/DB dafür kein Feld vorgesehen ist? Dann musst du zumindest einen Leerstring (oder Blank-String) an diese Textmarke übergeben.
    wdDoc.Bookmarks("Zivilstand").Range = " "
    2) Dass du im Worddokument keine Textmarke namens '"Zivilstand" hast und dieser trotzdem einen zB. Leerstring zuweisen willst. Das kann nicht funktionieren - diese versuchte Zuweisung
    wdDoc.Bookmarks("Zivilstand").Range = ""
    musst du aus dem VBA-Code entfernen.

    Darüber hinaus: Hast du mein Posting #11 vom 8.12.2021 in diesem Thread genau gelesen?
    Dort habe ich darauf ausdrücklich hingewiesen, dass man Textmarken nur 1x beschreiben (=mit Inhalt füllen) kann, dann sind sie verschwunden. Will man die Textmarken dieses Worddokuments ein 2. Mal mit Daten aus ACCESS befüllen (weil man zB. weitere Sätze aus einer DB-Abfrage vorrätig hat), muss dies scheitern, weil keine Textmarken mehr vorhanden sind.

    Aus diesem Grund habe ich eine kleine Objektklasse "KlasseTextMarke" in dieses Worddokument aufgenommen, die 2 Methoden enthält: Mit der einen kann man Werte aus Textmarken abholen (=lesen) und mit der anderen kann man Werte in der Textmarke deponieren (=schreiben), ohne hinterher die Textmarke(n) zu verlieren.
    Das Worddokument von damals enthält auch eine Userform. Öffnet man das Codemodul von dieser, kann man ersehen, wie dieses Objekt verwendet werden muss. Da die Userforms von Word/Excel sehr ähnlich den Formularen in ACCESS sind, dürfte die Anpassung für dich kein Problem sein.
     
    Exl121150, 31. Januar 2023
    #14
    1 Person gefällt das.
  15. GiTo79 User
    Moin moin Exl121150 und vielen Dank für Deine Antwort. Glaube ich habe mich in meinem Post schlecht ausgedrückt, was mein Problem ist. Anbei der Code welchen ich nutze um die Daten aus der Datenbank in das Worddokument zu übertragen.

    With wdDoc
    .Bookmarks("NameVor").Range = Me!NameVor 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("Nachname").Range = Me!Nachname 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("PK").Range = Me!PK 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("Dienstgrad_ID").Range = Me!Dienstgrad_ID.Column(1) 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("DatumMaske").Range = Me!DatumMaske 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("DatumHelm").Range = Me!DatumHelm 'Datenfelder müssen gem. Tabelle angepasst werden
    .Bookmarks("Bemerkung").Range = Me!Bemerkung 'Datenfelder müssen gem. Tabelle angepasst werden
    End With

    Nun aber zu dem Problem, was ich versuchen möchte zu lösen. In meiner Datenbank sind die Felder mit NameVor, Nachname, PK, Dienstgrad_ID, DatumMaske und Bemerkung gepflegt mit Daten. Das Feld DatumHelm ist wegen fehlendem Datum nicht geflegt (kein Datum eingetragen in der Datenbank). Wenn ich nun die Daten in das Worddokument übertrag, werden die ersten fünf Daten übertragen, nicht aber das befüllte Feld Bemerkung. Sobald aber ein Datum beim Feld DatumHelm gepflegt ist, erscheint auch der Eintrag im Feld Bemerkung.

    Habe jetzt die Überlegung ein fiktives Datum bei dem fehlenden Wert einzutragen, oder im Code eine Lösung zu finden, das wenn trotzdem ein Eintrag in der Datenbank nicht befüllt ist, er trotzdem alles übernimmt.

    Sonst klappt es alles ohne Probleme, auch wenn ich zum Beispiel einen Eintrag im Word Dokument zweimal ausgeben möchte, zum Beispiel oben den Namen und unten auch noch einmal. Klappt alles, nur das Problem, wenn ein Eintrag fehlt zeigt er nichts weiter an.

    Hoffe jetzt habe ich mein Problem besser beschrieben.

    Danke trotzdem schonmal und entschuldige meine Laienhaftigkeit. Gruß Tobias
     
Thema:

übergabe an Word mit Textmarken

Die Seite wird geladen...
  1. übergabe an Word mit Textmarken - Similar Threads - übergabe Word Textmarken

  2. Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.

    in Microsoft Access Hilfe
    Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.: Hallo zusammen, ich benötige Hilfe bei Formularen und VBA. Ich habe ein Hauptformular mit drei Unterformularen. Im Kopfbereich des Hauptformulars befinden sich mehrere Befehlsschaltflächen,...
  3. 255 Zeichen bei Übergabe von TextBox an Zelle

    in Microsoft Excel Hilfe
    255 Zeichen bei Übergabe von TextBox an Zelle: Hallo Forum, Ich nutze eine TextBox für die Eingabe von Notizen. Nun können diese durchaus sehr lang ausfallen und ich habe festgestellt, das nach 255 Zeichen Schluss ist und ich bei der Übergabe...
  4. Keine Werte bei Übergabe eines Bereichs innerhalb einer Funktion

    in Microsoft Excel Hilfe
    Keine Werte bei Übergabe eines Bereichs innerhalb einer Funktion: Hallo, ich habe eine Funktion in VBA geschrieben, in der ich zwei Bereich aus einem Tabellenblatt, nach bestimmten Kriterien durchsuchen will. Nachdem ich nie einen Rückgabewerte bekomme, habe...
  5. MS Teams Meeting Raum Organisator erkrankt übergäbe der Rechte

    in Microsoft Teams Hilfe
    MS Teams Meeting Raum Organisator erkrankt übergäbe der Rechte: Hallo, Organisator eines Raumes in MS Teams erkrankt. Wie kann ich die Rechte an den Raum auf einen anderen übertragen? Bzw. kann ich im Vorfeld also beim Erstellen des Meetingraums bereits einen...
  6. Probleme bei der übergabe von Daten an ein Unterformular

    in Microsoft Access Hilfe
    Probleme bei der übergabe von Daten an ein Unterformular: Hallo, möchte gerne Daten an ein Unterformular übertragen, das weitere daten enthält. Hab schon total viel hin und her probiert. Aber ich bekomme es nicht hin, desweiteren habe ich auch probleme...
  7. Unterschied Public zu Parameter Übergabe ByRef / ByVal

    in Microsoft Excel Hilfe
    Unterschied Public zu Parameter Übergabe ByRef / ByVal: Hallo! Ich hätte einmal gern gewusst, was der genaue Unterschied bei einer Parameter Übergabe im Hintergrund ist. Ich kann eine Variable via Public überall verfügbar machen, genauso wie diese...
  8. Hilfe ( Acces übergabe an Word )

    in Microsoft Access Hilfe
    Hilfe ( Acces übergabe an Word ): Habe folgendes Problem: Habe eine Datenbank erstellt die Kundendaten ( Adresse etc. verwaltet ) Nun sollen aber vorgefertigte Texte ausgedruck werden. Ich habe mir das so vorgestellt, dass der...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden