Textmarken/Bookmarks - Von Excel auf Word Textmarke zugreifen und in neues Worddokument kopieren

  • Word

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Main.

    Textmarken/Bookmarks - Von Excel auf Word Textmarke zugreifen und in neues Worddokument kopieren

    Hallo!

    Programmbeschreibung(Kann übersprungen werden):
    Ich habe eine Excel Tabelle in der ich Textmarken anharken möchte. Diese Textmarken befinden sich in einem Word-Dokument und sind bekannt. Diese ausgewählten Textmarken sollen in einem neuem Word-Dokument gespeichert werden und zwar nicht als Textmarke den ich dann einfügen kann sondern als quasi eingefügte Textmarke/Bookmark. So sollen sich individuel Prüfbögen erstellen lassen, die dann einfach ausgefüllt werden können.

    Problem:
    Ich kann nicht die Textmarken vom WordDokument A in das frisch erzeugte WordDokument B einfügen.

    Fehlversuche:

    Quellcode

    1. Hallo!
    2. Programmbeschreibung(Kann übersprungen werden):
    3. Ich habe eine Excel Tabelle in der ich Textmarken anharken möchte. Diese
    4. Textmarken befinden sich in einem Word-Dokument und sind bekannt. Diese
    5. ausgewählten Textmarken sollen in einem neuem Word-Dokument gespeichert
    6. werden.
    7. Problem:
    8. Ich bekomme die Textmarken nicht von dem einen Dokument in das neu erzeugte.
    9. Fehlversuche:
    10. Quellcode
    11. Dim AppWDTextmarken As Object
    12. Dim wdApp As Object 'Die Word Application
    13. Dim wDoc As Object 'Das Word Dokument bzw. geöffnete Seite
    14. On Error Resume Next
    15. Set wdApp = GetObject(, "Word.Application")
    16. On Error GoTo 0
    17. If wdApp Is Nothing Then
    18. Set wdApp = CreateObject("Word.Application")
    19. wdApp.Visible = True
    20. End If
    21. wdApp.documents.Add
    22. Set wDoc = wdApp.ActiveDocument
    23. Set AppWDTextmarken = CreateObject("Word.Application") 'Word als Object starten
    24. AppWDTextmarken.Visible = True
    25. AppWDTextmarken.documents.Open
    26. Sheets("Einstellungen").Range("C10").Value & "\" &
    27. Sheets("Einstellungen").Range("B10").Value & ".docx"
    28. Dim strVar As String
    29. Dim TMRange As Range
    30. Dim TM As String
    31. 'Variablen mit Werten füllen
    32. strVar = AppWDTextmarken.ActiveDocument.Bookmarks(Sheets("Prüferstellung").Range("D17").Value).Range.Text
    33. TM = Sheets("Prüferstellung").Range("D17").Value
    34. 'Textmarke füllen und neu setzen
    35. If AppWDTextmarken.ActiveDocument.Bookmarks.Exists(TM) Then
    36. Set TMRange = AppWDTextmarken.ActiveDocument.Bookmarks(TM).Range
    37. 'Rangeobjekt einen Wert zuweisen
    38. TMRange = strVar
    39. 'Textmarke mit dem wert setzen
    40. wdApp.ActiveDocument.Bookmarks.Add TM, AppWDTextmarken.ActiveDocument.Bookmarks(TM).Range
    41. Else
    42. Fehlermeldung, wenn es die Textmarke nicht gibt
    43. MsgBox "Textmarke konnte nicht gesetzt werden!"'
    44. End If



    Oder das hier:

    Quellcode

    1. Dim rng As Range
    2. ' AppWDTextmarken.ActiveDocument.Bookmarks(Sheets("Prüferstellung").Range("D17").Value).Range.Copy
    3. AppWDTextmarken.ActiveDocument.Bookmarks(Sheets("Prüferstellung").Range("D17").Value).Range.Copy
    4. rng.Paste
    5. rng.Font.Hidden = False
    6. wdApp.ActiveDocument.Bookmarks.Add Sheets("Prüferstellung").Range("D17").Value, rng


    Ich hab das jetzt in den verschiedensten Konstalltionen schon durch und bekomme es leider nicht hin. Benutze ich den falschen Code? Ich hab leider noch nie mit Textmarken gearbeitet.

    Vielen Dank!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Main“ ()

    Bleibt den dann die Formatierung der Textmarken erhalten? Also auch die Ausfüllfelder?
    Wie würde ich den bei dem Serienbrief vorgehen? Damit hab ich auch noch nicht programmiert. Ist das den einfacher? Funktioniert das im grundgenommen genauso wie mit den Textmarken?
    Ich möchte ja, dass ich in der Excel Datei den Namen der Textmarke eintrage und das er sich dann alle ausgewählten Textmarken aus der Haupt-Word-Datei raussucht und diese im Anschluss in ein neues Word-Dokument kopiert.

    Die Textmarken sollen nicht Hart im Code stehen, sondern sollen Updatebar und erweiterbar bleiben.Sprich. Ich kann das Haupt-Word-Dokument mit Textmarken erweitern und muss nur die Namen der Textmarken in der Excel Datei speichern.
    Hab den Code noch mal überarbeitet damit er übersichtlicher wird. Ich hoffe ich habe ihn gut Dokumentiert.

    Ich möchte einfach die Textmarke aus der Quelldatei in eine Neue Datei kopieren und anhand dieser aneinanderreihung soll ein Prüfprotokoll entstehen.

    Hier der Quellcode mit nur einer Textmarke

    Quellcode

    1. Sub WordDokumentErstellen2()
    2. Dim WordApp As Object 'Die Word App
    3. Dim WordQuellDatei As Object 'Die Word Quelldatein mit Textmarken
    4. Dim WordZielDatei As Object 'Die neu erstellte Zieldatei
    5. Dim TextmarkenName As String
    6. Dim rngBereich As Range
    7. TextmarkenName = "NameTextmarke"
    8. 'Prüfe ob Word bereits geöffnet ist. Wenn ja dann greife darauf zu und wenn nicht dann gehe weiter
    9. On Error Resume Next
    10. Set WordApp = GetObject(, "Word.Application")
    11. On Error GoTo 0
    12. 'Wenn noch kein Dokument offen dann öffne ein neues
    13. If WordApp Is Nothing Then
    14. Set WordApp = CreateObject("Word.Application")
    15. WordApp.Visible = True
    16. End If
    17. 'Erstelle ein neues Word-Dokument
    18. WordApp.Documents.Add
    19. 'Weise das neue Dokument als WordZielDatei zu
    20. Set WordZielDatei = WordApp.ActiveDocument
    21. 'Hier können dann Parameter zur Formatierung mit With wdApp.Selection eingefügt werden
    22. 'Hier wird die Textmarken Datei geöffnet
    23. WordApp.Documents.Open Sheets("Einstellungen").Range("C10").Value & "\" & Sheets("Einstellungen").Range("B10").Value & ".docx"
    24. 'Hier die Word-Textmarkendatei an WordQuellDatei binden
    25. Set WordQuellDatei = WordApp.ActiveDocument
    26. If WordQuellDatei.Bookmarks.Exists(TextmarkenName) Then
    27. MsgBox WordQuellDatei.Bookmarks(TextmarkenName).Range
    28. Set rngBereich = WordQuellDatei.Bookmarks(TextmarkenName).Range
    29. rngBereich.Copy
    30. WordZielDatei.Range(Start:=WordZielDatei.Content.End - 1, End:=WordZielDatei.Content.End - 1).Paste
    31. End If
    32. End Sub


    In der Zeile 33 bekomme ich einen Fehler:
    Laufzeitfehler '13':
    Typen unverträglich

    Dieser Code wird allerdings in mehreren Foren so genutzt. Hab jetzt noch nicht den fehler in meinem gefunden.