Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zwischenablage Kopie nach Word

Zwischenablage Kopie nach Word
11.06.2009 13:03:22
Peter
Hallo,
vorab, ich weiß, ich bin im falschen Forum. Aber ich kenne kein so kompetentes Word-Forum. Vielleicht kann mir ja doch jemand helfen.
Mein Problen:
Ich kopieren per VBA Kommentare einzelner Zellen in die Zwischenablage. Dort kommen sie auch an. Mit VBA öffne ich nun Word und möchte die Zwischenablage in die Word-Datei einsetzen. Hier fehlen mir die richtigen Word-Makro-Befehle. Nur mit selection.paste geht das nicht. Mit getfromClipboard bekomme ich eine Formatect-Struktur-Fehlermeldung.
Vielleicht hat jemand das Problem schon mal gelöst, - oder kann mir ein gutes Word-Forum nennen.
Für den freundlichen Helfer
Dank vorab
Grüße
Peter
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage Kopie nach Word
11.06.2009 14:02:39
Ramses
Hallo
WORD hat auch einen Makrorekorder :-)
Selection.PasteAndFormat (wdPasteDefault)
Davor musst du halt noch dein WordObject stellen. Dann sollte das gehen.
DeineWordVariable.Selection.PasteAndFormat (wdPasteDefault)
Gruss Rainer
AW: Zwischenablage Kopie nach Word
11.06.2009 15:38:29
Peter
Hallo Rainer,
danke für deine Tipps, aber so richtig weiter komme ich nicht. Ich habe folgenden Code verwendet:

Sub ZwischenablageEinfügen()
Selection.EndKey Unit:=wdStory
Selection.Paste
End Sub


Das funktioniert, wenn ich das kleine Makro in Word aufrufe. Es funktioniert aber nicht, wenn ich es mit AutoOpen verbinde.


Sub AutoOpen()
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
ZwischenablageEinfügen
End Sub


Alternativ habe ich versucht, Deinen Hinweis umzusetzen – mit wenig Erfolg


Sub ZwischenablageEinfügen()
Dim Ablage As DataObject
Dim stext As String
Selection.EndKey Unit:=wdStory
Set Ablage = New DataObject
Ablage.GetFromClipboard
stext = Ablage.GetText(1)
stext.Selection.Paste
End Sub


Hier erhalte ich eine Fehlermeldung bei stext (wohl weil stext kein object ist).
Luc meinte, ich solle es mal bei Office-Loesung probieren. Da werde ich mich jetzt anmelden. Es würde mich aber freuen, wenn Du aber noch einen Hinweis hast.
Grüße
Peter

Anzeige
AW: Zwischenablage Kopie nach Word
11.06.2009 20:27:16
ramses
Hallo
Du schreibst du öffnest doch Word über ein Object.
Das musst dieses nehmen.
Zeig mal den Code den du verwendest,.. vorausgesetzt du hast im anderen Forum noch keine Lösung
Gruss Rainer
AW: Zwischenablage Kopie nach Word
11.06.2009 21:30:29
Peter
Hallo Rainer,
schön, dass Du Dich noch einmal gemeldet hast. Ich hatte folgenden Code benutzt.

Sub Tagebuch()
worddatei = Application.ActiveWorkbook.Path & "\Tagebuch.doc"
If Dir(worddatei) = "" Then
Beep
MsgBox "Das Verzeichnis der Worddatei oder" & vbCr & _
"die Worddatei > Andreas-Tagebuch.doc 



Sub CommentCopy()
Dim oData As New DataObject
Dim sText As String
sText = ""
If OpenClipboard(0&)  0 Then
Call EmptyClipboard
Call CloseClipboard
End If
If ActiveCell.Comment Is Nothing Then
sText = Date
With oData
.SetText sText
.PutInClipboard
End With
Else
sText = ActiveCell.Comment.Text
With oData
.SetText sText
.PutInClipboard
End With
End If
End Sub


'Mike vom Forum Office-loesung gab mir den Hinweis den Text doch direkt über Excel zu übergeben. Ich habe es mit folgendem Code versucht.
If ActiveCell.Comment Is Nothing Then
sText = Date & Chr(13)
Else
sText = ActiveCell.Comment.Text & Chr(13)
End If
Set wrdDoc = wrdapp.Documents.Open(worddatei)
wrdapp.Activate
wrdapp.Selection.TypeText sText
Damit klappt es. Aber über die Zwischenablage müsste es doch auch gehen. Denn wenn die Worddatei aufgerufen ist, kann ich den Text über das Einfügensymbol abrufen. Wenn Du dafür eine Lösung hättest, wäre schön. Denn solche Probleme/Aufgaben treten ja immer mal wieder auf. Die Lösung mit wrdapp.Selection.TypeText sText ist natürlich viel einfacher und mein heutiges Problem gelöst..
Danke für Dein Bemühen
Grüße
Peter

Anzeige
AW: ASCII-Zeichen 'BD' ausgeben
11.06.2009 23:20:08
Ramses
Hallo
Ich hätte es genauso gemacht.
Der Zugriff auf die Zwischenablage und deren spezifische Handhabung ist recht komplizert und rechtfertigt den Aufwand nicht.
Gruss Rainer
...und der "günstigere" auf das Office-Command-...
12.06.2009 01:16:29
Luc:-?
...Objekt fkt ab Office2007 nicht mehr mit VBA, weil es dort kein Command mehr ist wie ich schmerzlich feststellen musste...!
Gruß Luc :-?
Anzeige
Ansonsten, Office-Loesung, Lisa ist kompetent...
11.06.2009 14:37:33
Luc:-?
...genug, Peter!
Gruß Luc :-?
AW: Ansonsten, Office-Loesung, Lisa ist kompetent...
11.06.2009 15:39:27
Peter
Hallo Luc,
danke für den Hinweis, ich werde es dort einmal versuchen.
Grüße
Peter
Bitte sehr! Hoffentl hilft's... Gruß owT
11.06.2009 16:27:53
Luc:-?
:-?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage Kopie nach Word


Schritt-für-Schritt-Anleitung

  1. VBA-Umgebung vorbereiten: Stelle sicher, dass du in Excel die Entwicklertools aktiviert hast.

  2. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul.

  3. Code zum Kopieren in die Zwischenablage: Verwende den folgenden Code, um Inhalte in die Zwischenablage zu kopieren:

    Sub CommentCopy()
       Dim oData As New DataObject
       Dim sText As String
       sText = ""
       If OpenClipboard(0&) <> 0 Then
           Call EmptyClipboard
           Call CloseClipboard
       End If
       If ActiveCell.Comment Is Nothing Then
           sText = Date
       Else
           sText = ActiveCell.Comment.Text
       End If
       With oData
           .SetText sText
           .PutInClipboard
       End With
    End Sub
  4. Word-Dokument öffnen und einfügen: Verwende den folgenden Code, um das Word-Dokument zu öffnen und die Zwischenablage einzufügen:

    Sub ZwischenablageEinfügen()
       Dim wrdApp As Object
       Dim wrdDoc As Object
       Set wrdApp = CreateObject("Word.Application")
       wrdApp.Visible = True
       Set wrdDoc = wrdApp.Documents.Add
       wrdDoc.Content.PasteAndFormat (wdPasteDefault)
    End Sub
  5. Makros ausführen: Führe zuerst das CommentCopy-Makro aus, gefolgt von ZwischenablageEinfügen.


Häufige Fehler und Lösungen

  • Fehlermeldung bei GetFromClipboard: Wenn du eine Fehlermeldung erhältst, überprüfe, ob die Microsoft Forms 2.0 Object Library in den Verweisen aktiviert ist.

  • Selection.Paste funktioniert nicht: Stelle sicher, dass das Word-Dokument aktiv ist, wenn du versuchst, den Inhalt einzufügen.

  • Fehler mit sText: Wenn du die Fehlermeldung bekommst, dass sText kein Objekt ist, stelle sicher, dass du den Text korrekt festlegst, bevor du versuchst, ihn einzufügen.


Alternative Methoden

  • Direktes Einfügen ohne Zwischenablage: Du kannst den Text direkt in Word einfügen, ohne die Zwischenablage zu verwenden, indem du den Text einfach über wrdApp.Selection.TypeText sText übergibst.

  • Verwendung von getfromclipboard vba: Anstelle von DataObject, kannst du versuchen, den Text direkt von der Zwischenablage in Word zu lesen, wenn du VBA verwendest.


Praktische Beispiele

  1. Kommentare von Zellen kopieren: Das folgende Makro kopiert Kommentare aus Excel-Zellen in die Zwischenablage und fügt sie in Word ein:

    Sub ExcelZuWord()
       Call CommentCopy
       Call ZwischenablageEinfügen
    End Sub
  2. Berechnung des Durchschnitts von Zeichen in Word: Du kannst auch den durchschnittlichen Zeichenanzahl der Kommentare berechnen, bevor du sie in Word einfügst.


Tipps für Profis

  • Optimierung des Codes: Verwende With-Anweisungen, um den Code zu optimieren und die Lesbarkeit zu verbessern.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler während der Ausführung zu vermeiden.

  • Testen von Makros: Teste deine Makros gründlich in einer sicheren Umgebung, bevor du sie in wichtigen Dokumenten verwendest.


FAQ: Häufige Fragen

1. Wie komme ich in die Zwischenablage?
Du kannst Inhalte in die Zwischenablage kopieren, indem du die DataObject-Klasse in deinem VBA-Code verwendest.

2. Warum funktioniert Selection.Paste manchmal nicht?
Das liegt häufig daran, dass das Ziel-Dokument nicht aktiv ist oder die Zwischenablage leer ist.

3. Was ist wdPasteDefault?
wdPasteDefault ist ein Word-Konstant, die verwendet wird, um den Standardformatierungsstil beim Einfügen von Inhalten aus der Zwischenablage zu übernehmen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige