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
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):
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
CodeTags korrigiert ~VaporiZed
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
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
- Option Explicit
- Sub NachWordkopieren()
- '
- 'Variablen Definition:
- Dim StartZeile As Integer
- Dim Anzahl_Zeilen As Integer
- Dim Spalte_fuer_Word_Uebertrag As Integer
- Dim i As Integer
- Dim x As Integer
- Dim iClick As Integer
- Dim currentWorkbookDir As String
- Dim WordDatei As Object
- Dim appWord As Object
- '***ein neues Objekt mit Word erstellen***
- Set appWord = CreateObject("Word.Application")
- '***Pfad herausfinden
- currentWorkbookDir = ActiveWorkbook.Path
- ChDir currentWorkbookDir
- '***auf Vorlage zugreifen
- Set WordDatei = appWord.Documents.Add(currentWorkbookDir & "\Vorlage Word.docx")
- '*** öffnen der Worddatei, damit man auch sieht was passiert ist
- appWord.Visible = True
- 'Startzeile gibt die Zeile an mit der die Schleife beginnt. Ist in der Excel definiert
- '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
- 'Da ich mit dem Namensmanager in Excel arbeite beziehe ich mich bei der Range Angabe auf den Zellen Name und nicht auf die Koordinate
- StartZeile = Range("StartZeile").Value
- Anzahl_Zeilen = Range("Anzahl_Zeilen").Value
- Spalte_fuer_Word_Uebertrag = Range("UebertragWord").Value
- i = StartZeile
- x = StartZeile + Anzahl_Zeilen
- 'For Schleife
- For i = StartZeile To x
- If Cells(i, Spalte_fuer_Word_Uebertrag).Value <> "NV" Then
- Cells(i, Spalte_fuer_Word_Uebertrag).Copy
- With appWord
- .Selection.EndKey Unit:=wdStory
- .Selection.PasteExcelTable False, False, False 'Code aus Word Makro Rekorder entnommen
- .Selection.TypeParagraph
- End With
- 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?
- End If
- Next
- Set WordDatei = Nothing
- Set appWord = Nothing
- 'MessageBox
- iClick = MsgBox( _
- prompt:="Angebot wurde erstellt!", _
- Buttons:=vbOKOnly)
- End Sub
CodeTags korrigiert ~VaporiZed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()