Excel -> Word: Laufzeitfehler 4605 Einfügen von Excel-Daten inkl. Formatierung in Word-Datei OHNE Textmarke, Tabelle etc. mit einer Schleife funktioniert nicht richtig

  • Excel

    Excel -> Word: Laufzeitfehler 4605 Einfügen von Excel-Daten inkl. Formatierung in Word-Datei OHNE Textmarke, Tabelle etc. mit einer Schleife funktioniert nicht richtig

    Hallo allerseits,

    als VBA Neuling brauche ich mal eure Hilfe. Bin so langsam am Verzweifeln.

    Problemstellung:
    Ich habe in Excel eine Spalte mit ca. 200 Zellen.
    Jede Zelle enthält Text mit unterschiedlichen Formatierungen.
    Diesen Text muss ich in eine Word Datei einfügen, die sich auf Basis eines Templates selbst generieren soll.
    Dabei soll
    • der Text aus Excel ans Ende des Word-Dokuments eingefügt werden.
    • NICHT als Tabelle eingefügt werden
    • Die Formatierung beibehalten werden
    • Der Cursor in die nächste Zeile in Word springen bzw. eine neue Zeile in Word entstehen
    • Wenn der Text „NV“ in der Zelle steht soll der Text nicht nach Word kopiert werden
    Mein Code funktioniert bis zum Einfügen in Word.
    Dort hakt es. (siehe blauen Code unten)
    Ohne irgendetwas am Code oder am Zellinhalt geändert zu haben, läuft die Schleife mal bis z.B. dem Text der 150. Zelle, mal nur bis zur 10., etc.

    Die verwendeten "Verweise" (kenne den richtigen Fachbegriff hierfür nicht, gebe es aber mal an, um eventuellen Rückfragen zuvor zu kommen):
    • Visual Basic for Applications
    • Microsoft Excel 14.0 Object Library
    • Microsoft Office 14.0 Object Library
    • Microsoft Word 14.0 Object Library
    • OLE Automation


    Fehlermeldung:
    Es ist immer der Laufzeitfehler 4605, aber mit den bereits hier im Forum diskutierten 4605er Einträgen komme ich nicht ans Ziel (vermutlich weil ich zu blöd bin es zu verstehen).

    Desweiteren für mich kurios: wenn ich das Makro im Einzelschrittverfahren durchlaufen will, die Schleife ab < .Selection.PasteExcelTable False, False, False > komplett bis zur letzten Wiederholung vor einer Fehlermeldung durchlaufen wird OHNE dass ich nochmals F8 gedrückt habe.

    Ich versteh einfach nicht was ich falsch mache.
    Ihr seid meine letzte Hoffnung.
    Kann mir Irgendjemand bitte helfen?

    Vielen Dank im Voraus.

    Herzliche Grüße,

    Sensai

    Mein Code

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub NachWordkopieren()
    3. '
    4. 'Variablen Definition:
    5. Dim StartZeile As Integer
    6. Dim Anzahl_Zeilen As Integer
    7. Dim Spalte_fuer_Word_Uebertrag As Integer
    8. Dim i As Integer
    9. Dim x As Integer
    10. Dim iClick As Integer
    11. Dim currentWorkbookDir As String
    12. Dim WordDatei As Object
    13. Dim appWord As Object
    14. '***ein neues Objekt mit Word erstellen***
    15. Set appWord = CreateObject("Word.Application")
    16. '***Pfad herausfinden
    17. currentWorkbookDir = ActiveWorkbook.Path
    18. ChDir currentWorkbookDir
    19. '***auf Vorlage zugreifen
    20. Set WordDatei = appWord.Documents.Add(currentWorkbookDir & "\Vorlage Word.docx")
    21. '*** öffnen der Worddatei, damit man auch sieht was passiert ist
    22. appWord.Visible = True
    23. 'Startzeile gibt die Zeile an mit der die Schleife beginnt. Ist in der Excel definiert
    24. 'Anzahl_Zeilen gibt die Anzahl der möglichen Zeilen an. Wird definiert über die Anzahl der IDs, durch eine Formel in der Zelle und über den Bereich der IDs definiert
    25. 'Da ich mit dem Namensmanager in Excel arbeite beziehe ich mich bei der Range Angabe auf den Zellen Name und nicht auf die Koordinate
    26. StartZeile = Range("StartZeile").Value
    27. Anzahl_Zeilen = Range("Anzahl_Zeilen").Value
    28. Spalte_fuer_Word_Uebertrag = Range("UebertragWord").Value
    29. i = StartZeile
    30. x = StartZeile + Anzahl_Zeilen
    31. 'For Schleife
    32. For i = StartZeile To x
    33. If Cells(i, Spalte_fuer_Word_Uebertrag).Value <> "NV" Then
    34. Cells(i, Spalte_fuer_Word_Uebertrag).Copy
    35. With appWord
    36. .Selection.EndKey Unit:=wdStory
    37. .Selection.PasteExcelTable False, False, False 'Code aus Word Makro Rekorder entnommen
    38. .Selection.TypeParagraph
    39. End With
    40. Range("LeereZelle").Copy 'Hab ich eingefügt da ich die Befürchtung hatte irgend ein Zwischenspeicher würde vielleicht volllaufen und das sei das Problem, also kopier ich einfach eine leere Zelle in den Zwischenspeicher. Naiv?
    41. End If
    42. Next
    43. Set WordDatei = Nothing
    44. Set appWord = Nothing
    45. 'MessageBox
    46. iClick = MsgBox( _
    47. prompt:="Angebot wurde erstellt!", _
    48. Buttons:=vbOKOnly)
    49. End Sub


    CodeTags korrigiert ~VaporiZed

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