Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zwischenablage bei Bookmark einfügen VBA
02.07.2021 19:28:59
Lars
Hallo Forum,
ich bin seit längerer Zeit auf der Suche nach einer Lösung für mein VBA-Problem (habe noch nie ein VBA-Skript geschrieben) und komme an einer Stelle nicht weiter.
Zum Gesamtprojekt: Ich möchte aus Excel heraus ein VBA-Skript starten, welches eine bestimmte Tabelle mit unterschiedlich vielen Inhalten in die Word-Datei überträgt. Dazu muss erkannt werden wie viele Datensätze in der Tabelle sind und dementsprechend ein bestimmter Teil in der Word Datei eingefügt werden um dort die Datensätze einzufügen. Standartmäßig ist dieser "Einfügebereich" nur einmal - also nur für einen Excel-Datensatz - da. Deshalb zählt das Skript die Anzahl der Datensätze - das klappt - und soll genau so oft diesen "Einfügebereich" an einer Stelle, die als Bookmark im Word-Dok gekennzeichnet ist einfügen. Daran scheitere ich (alles andere klappt also Daten aus Excel kopieren und in Einfügebereich einfügen). Ich versuche diesen Einfügebereich im Word-Dok durch Bookmarks zu kennzeichnen und zu kopieren und dann unter dem ersten Einfügebereich (bei der Bookmark "Platzhalter_Mehrarbeit") einzufügen. Weiß jemand wie das funktioniert, also den Inhalt der Zwischenablage bei einer Bookmark einzufügen oder eben an einer bestimmten Stelle einzufügen? Mein kommentierter Codeversuch für den relevanten Teil (Range kopieren und an Bookmark einfügen) ist anbei zu sehen.
Vielen Dank für jeden Hinweis!

'kopieren der gewünschten Inhalte aus Excel, auswählen des entsprechenden Lesezeichens in Word und einfügen der Inhalte:
With wdApp
Set RangeMehrarbeitVorlage = wdDoc.Range( _
Start:=wdDoc.Bookmarks("Beginn_Vorlage_Mehrarbeit").Range.Start, _
End:=wdDoc.Bookmarks("Ende_Vorlage_Mehrarbeit").Range.End)
RangeMehrarbeitVorlage.Copy
'damit wird in die Range RangeMehrarbeitVorlage der gewünschte Inhalt reinkopiert - oder zumindest in den Zwischenspeicher, das funktioniert noch.
wdDoc.Paste Destination:=wdDoc.Bookmarks("Platzhalter_Mehrarbeit")
wdDoc.RangeMehrarbeitVorlage.Paste
'so wollte ich den kopierten Inhalt an die Stelle der im Word-Doc erstellten Bookmark einfügen - funktioniert leider nicht
Set PlatzhalterRange = wdDoc.Bookmarks("Platzhalter_Mehrarbeit").Range
PlatzhalterRange.Text = wdDoc.Bookmarks("Platzhalter_Mehrarbeit").Range.Text & "RangeMehrarbeitVorlage"
wdDoc.Bookmarks.Add "Platzhalter_Mehrarbeit", PlatzhalterRange
'nächster Versuch: es wird nur der Variablenname eingefügt an der richtigen Stelle eingefügt aber nicht die Zwischenablage die in der Variable gespeichert ist,
es steht also "RangeMehrarbeitVorlage" im Word Dokument an der Stelle wo ich die Zwischenablage (eine Tabelle mit Text und zwei kleinen Bildern) einfügen wollte.
End With

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage bei Bookmark einfügen VBA
02.07.2021 21:43:32
JoWE
Hallo Lars,
lade doch mal die Arbeitsdateien hoch. Vielleicht zeigst Du darin auch noch das gewünschte Ergebnis.
Im Augenblick ist mir nicht wirklich klar was da im Einzelnen geschehen soll.
Gruß
Jochen
AW: Zwischenablage bei Bookmark einfügen VBA
07.07.2021 16:20:14
Lars
Hallo und danke für die Antwort,
ich versuche das Problem noch einmal besser zu erläutern und füge den Code so wie ich ihn bisher habe anschließend ein.
Der Code funktioniert soweit wie folgend: Aus Excel heraus wird ein Word-Dokument geöffnet und eine Word Vorlage eingefügt. Es wird ein Name für die Word Datei festgelegt. Es werden die Daten in der Exceltabelle in die Bookmarks der Word Datei in den - bisher einzigen - "Einfügebereich" eingefügt. Nun möchte ich, dass aber für alle Daten in Excel (es ist nicht nur ein Datensatz) jeweils ein weiterer Einfügebereich in der Word Datei hinzugefügt wird. Daran scheitere ich und das würde ich gerne mit Hilfe des Forums lösen. Ich habe es geschafft diesen Einfügebereich mit Bookmarks zu markieren und in die Zwischenablage einzufügen. Was ich nicht geschafft habe ist die Zwischenablage - also den zusätzlichen Einfügebereich - nun erneut im Dokument einzufügen. Stattdessen wird der Variablenname an der vorgesehenen Stelle eingefügt aber nicht der Inhalt dieser Variable in der Zwischenablage. Ich kann leider auch nach über einer Woche keinerlei Fortschritt verzeichnen und befürchte langsam mein Projekt lässt sich mit dieser Herangehensweise nicht umsetzen. Gibt es irgendeine Möglichkeit mit VBA einen Bereich eines Word Dokumentes zu kopieren und an einer anderen Stelle im Word Dokument einzufügen? Danke für jeden Tipp.
PS: ist es eventuell möglich dieses Problem alternativ zu lösen, indem man eine Word-Vorlage, die diesen Einfügebereich enthält in das aktive Word Dokument an die gewünschte Stelle (markiert durch ein Bookmark) einsetzt?
Vielen Dank!
Anbei der vollständige VBA Code:

Option Explicit
Sub CreateBasicWordReport()
'Word Library ist eingebunden, um nun die Application Word und
'nicht Excel anzusprechen, muss zunächst "Word" davor geschrie-
'ben werden, da Excel in der Prio immer über Word ist. Die
'Variable wird also wie folgend initiiert:
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdBookmark As Word.Bookmark
'weitere Variablen:
Dim strTitel As String
Dim intZeilenzahl As Integer
Dim i As Integer
Dim RangeMehrarbeitVorlage As Word.Range 'Object tut es evt. auch
Dim PlatzhalterRange As Word.Range
'Anzahl der zu lesenden Zeilen in der Exceltabelle abfragen:
Range("B2").Select
intZeilenzahl = Selection.CurrentRegion.Rows.Count
'Titel per InputBox abfragen - "CHR(13) sorgt für einen
'Zeilenumbruch in der Messagebox
strTitel = InputBox("Titel eingeben:" & Chr(13) & "(ohne Datumsangabe - diese wir automatisch am Ende des Dokumentnamens eingefügt)", "Automation Skript", "Bitte hier den Titel des neuen Dokumentes eingeben...")
'neue Word Instanz:
Set wdApp = New Word.Application 'Early binding-Beispiel
'Word sichtbar machen
'Um nicht immer wdApp.[Befehl] schreiben zu müssen, könnte man es
'in ein "with-Statement" einrahmen
wdApp.Visible = True
wdApp.Activate
'nun ein Dokument hinzufügen, damit es nicht nur grau in Word ist
'genauer: das Template soll genutzt werden
Set wdDoc = wdApp.Documents.Add("C:\Users\Dokument_Template.dotx") 'Pfad des Vorlagendokumentes an dieser Stelle
'kopieren der gewünschten Inhalte aus Excel, auswählen des ent-
'sprechenden Lesezeichens und einfügen der Inhalte:
With wdApp
'Set RangeMehrarbeitVorlage = wdDoc.Range(Start:=0, End:=10)
Set RangeMehrarbeitVorlage = wdDoc.Range( _
Start:=wdDoc.Bookmarks("Beginn_Vorlage_Mehrarbeit").Range.Start, _
End:=wdDoc.Bookmarks("Ende_Vorlage_Mehrarbeit").Range.End)
RangeMehrarbeitVorlage.Copy
'damit wird in RangeMehrarbeitVorlage der gewünschte Inhalt reinkopiert
'wdDoc.Paste Destination:=wdDoc.Bookmarks("Platzhalter_Mehrarbeit")
wdDoc.RangeMehrarbeitVorlage.Paste
'hier ist mein Problem: so funktioniert das mit dem Einfügen aus der Zwischenablage nicht
'nächster Versuch:
Set PlatzhalterRange = wdDoc.Bookmarks("Platzhalter_Mehrarbeit").Range
PlatzhalterRange.Text = wdDoc.Bookmarks("Platzhalter_Mehrarbeit").Range.Text & "RangeMehrarbeitVorlage"
wdDoc.Bookmarks.Add "Platzhalter_Mehrarbeit", PlatzhalterRange
'es wird nur der Variablenname an die richtige Stelle im Dokument eingefügt und das was eingefügt
'werden soll landet in der Zwischenablage aber nicht Eingefügt im Dokument -> ebenfalls keine Lösung...
'weiter folgender Code (Einfügen aus Excel nach Word) funktioniert und ist nicht relevant für die Frage
End With
With wdApp
For i = 2 To intZeilenzahl + 1
If Worksheets("Tabelle1").Cells(i, 4).Value  "RB" Then
wdDoc.Bookmarks("Nachname_Mehrarbeit").Range = Range("C2").Value
wdDoc.Bookmarks("Nachname_Mehrarbeit2").Range = Range("C2").Value
wdDoc.Bookmarks("Nachname_Mehrarbeit3").Range = Range("C2").Value
wdDoc.Bookmarks("Vorname_Mehrarbeit").Range = Range("B2").Value
wdDoc.Bookmarks("Vorname_Mehrarbeit2").Range = Range("B2").Value
wdDoc.Bookmarks("Vorname_Mehrarbeit3").Range = Range("B2").Value
Else
wdDoc.Bookmarks("Nachname_Rufbereitschaft").Range = Range("C2").Value
wdDoc.Bookmarks("Nachname_Rufbereitschaft2").Range = Range("C2").Value
wdDoc.Bookmarks("Nachname_Rufbereitschaft3").Range = Range("C2").Value
wdDoc.Bookmarks("Vorname_Rufbereitschaft").Range = Range("B2").Value
wdDoc.Bookmarks("Vorname_Rufbereitschaft2").Range = Range("B2").Value
wdDoc.Bookmarks("Vorname_Rufbereitschaft3").Range = Range("B2").Value
End If
Next
.ActiveDocument.SaveAs2 Filename:="C:\Users...." & strTitel & " " & Format(Now, "dd-mm-yyyy") & ".docx"
End With
End Sub

Anzeige
AW: Zwischenablage bei Bookmark einfügen VBA
08.07.2021 18:33:34
JoWE
Hallo Lars,
also, ich verstehe das Problem ansatzweise ein wenig besser. Eine zielgerichtete und wirklich passende Lösung ließe sich vermutlich finden.
Da Du aber weiterhin Deine Arbeitsdateien nicht zeigen (hochladen) magst (ich hatte das in meinem vorherigen Posting angeregt), kann wohl nicht nur ich keine Lösung anbieten. Das Nachbauen von Arbeitsmappe und Word-Datei ist in der Regel nicht wirklich sinnvoll, da diese zwangsläufig nicht Deinen Dateien entsprechen würden. In der Folge kommt es dann zu weiteren Nachfragen, Lösungsversuchen etc., etc. usw. - dieser Weg scheidet also aus - nun jedenfalls in diesem Fall.
Ich bin damit raus, wünsche Dir aber weiterhin viel Erfolg mit Deinem Projekt.
Gruß
Jochen
Anzeige
AW: Zwischenablage bei Bookmark einfügen VBA
12.07.2021 10:48:47
Lars
Für jmd der das gleiche Problem hat:
Ich habe nur nach diesem Codeteil zum kopieren und einfügen mittels VBA in Word gesucht und es nicht selbst hinbekommen:

With wdApp
wdDoc.Tables(1).Select
wdApp.Selection.Copy
wdApp.Selection.GoTo What:=wdGoToBookmark, Name:="NameDerBookmark"
wdApp.Selection.Paste
End With
Alles andere funktioniert soweit ( :
Entschuldige die etwas zu verkomplizierte Fragestellung Jochen, ich wusste nicht wie ich es am besten erkläre xD
Viele Grüße

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige