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

Forumthread: Zwischenablage löschen

Zwischenablage löschen
18.09.2017 19:31:37
Jürgen
Hallo,
bin fast am Verzweifeln,
bin schon seit 2 Tagen am Suchen bei Google..
Ich habe ein Workbook mit 4 Tabellen
Ich kopiere von Tabelle1 zu Tabelle2 einige Werte mit:
Worksheets("Tabelle1").Range("M5:O44").Copy
Worksheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
zum Schluss will ich nur folgendes kopieren:
z = Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & z).Copy
Diese Daten will ich weiter verwenden.
Wenn ich diese Daten in eine Excel Spalte einfüge ist alles ok,
es wird nur die Spalte C eingefügt.
Wenn ich aber die Werte aus dem Zwischenspeicher in eine Word-Datei einfüge
sind da immer noch die 3 Spalten M5:O44 vorhanden...
Wie es aussieht klappt es bei Excel 2016 und bei Excel 2013 nicht, das muss ich aber noch genauer testen...
Allerdings, wenn ich den Zwischenspeicher-Inhalt anzeigen lasse, ist dieser immer gefüllt, ich bekomme ihn einfach nicht gelöscht...
Manuell natürlich ja, es soll aber in einem Makro geschehen...
Routinen wie z.B.
Sub leer()
Dim za_daten As New DataObject
za_daten.GetFromClipboard
za_daten.SetText ""
za_daten.PutInClipboard
End Sub

habe ich alles schon getestet, geht einfach nicht....
Weis jemand einen Rat?
Vielen Dank, Jürgen
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage löschen
18.09.2017 22:37:11
Mullit
Hallo,
am elegantesten per Api...
Option Explicit

Private Declare Function OpenClipboard Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long

Public Sub test()
    Call OpenClipboard(0&)
    Call EmptyClipboard
    Call CloseClipboard
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige
AW: Zwischenablage löschen
19.09.2017 07:04:18
Jürgen
Hallo,
Danke für die schnelle Antwort.
Diese Funktion hatte ich auch schon mal irgendwo gesehen und versucht zu testen.
Da gab es aber eine Fehlermeldung und ich hatte es nicht weiter verfolgt.
Nun habe ich nochmals versucht den Fehler zu beheben.
Nachdem was ich gefunden hatte muss man zwischen Declare und Function - PtrSafe schreiben.
Dan wird kein Fehler beim Ausführen angezeigt.
Nur leider befinden sich immer noch die 3 Spalten in dem Zwischenspeicher.
Um meine selektierten Zellen bewegt sich die "Strichel-Linie"
Was kann ich noch tun?
Gruß Jürgen
Anzeige
AW: Zwischenablage löschen
19.09.2017 07:43:21
Werner
Hallo Jürgen,
kann ich nicht nachvollziehen, hab im Moment aber auch nur Excel 2010 zu Verfügung. Damit klappt es mit dem Code. Beim Einfügen der Zwischenablage in ein Word-Dokument wird nur die Spalte C eingefügt.
Hier hast du allerdings nicht sauber referenziert:
Z = Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
Ist es tatsächlich gewünscht, die letzte Zeile im aktiven Blatt zu ermitteln und damit dann einen Bereich aus Blatt 2 zu kopieren? Wenn nein, dann solltest du beim Ermitteln der letzten Zeile auch auf das Blatt 2 referenzieren.
Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
Das hat aber nichts mit deinem eigentlichen Problem zu tun.
Gruß Werner
Anzeige
AW: Zwischenablage löschen
19.09.2017 08:18:01
Jürgen
Hallo, Werner,
danke für den Hinweis.
Ja, so wie Du es aufgezeigt hast, ist es sauberer...
übrigens, bei Office 2016 was ich noch nutze, tritt dieser Fehler nicht so auf.
Da wird zwar auch die Zwischenablage nicht gelöscht, aber es wird auch nur die Spalte
C, so wie gewünscht, eingefügt.
Wie oben schon geschrieben, soll es aber bei Office 2013 funktionieren.
Gruß Jürgen
Anzeige
AW: Zwischenablage löschen
19.09.2017 12:08:53
Jürgen
Hallo,
habe noch etwas getestet...
Ich habe dabei die Zwischenablage unter START geöffnet,
wenn ich diese leere und mein Makro laufen lasse dann sehe ich einmal die
3 Spalten aus der Tabelle.
nach:
Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
sind immer noch die 3 Spalten zu sehen.
Wenn ich aber vor:
Z = Worksheets("Tabelle2").Range("C1").End(xlDown).Row
Worksheets("Tabelle2").Range("C1:C" & Z).Copy
dies hier:
MsgBox HoleTextVonZwischenablage
einfüge, dann:
bleiben die 3 Spalten zwar in der Zwischenablage zu sehen aber davor steht dann
der zuletzt ausgewählte Bereich aus Spalte C
Wenn ich daraufhin die Zwischenablage in z.B. WORD einfüge steht dann auch nur die
gewünschte Spalte C mit den jeweiligen Werten. So geht es also,
jetzt muss ich nur noch die Sache mit der msgBox umgehen...
Übrigens, nach nochmaligen Aufruf des Makro werden die Werte in der Zwischenablage auch nicht
mehr, wird diese vielleicht vor dem Start immer gelöscht? Irgendwie...?
Gruß Jürgen
Anzeige
AW: Zwischenablage löschen
19.09.2017 12:02:55
Mullit
Hallo,
Nachdem was ich gefunden hatte muss man zwischen Declare und Function - PtrSafe schreiben.

dann wirst Du eine 64Bit Office-Version haben,... nix gut....
http://www.online-excel.de/excel/singsel.php?f=186
Gruß, Mullit
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage in Excel mit VBA leeren


Schritt-für-Schritt-Anleitung

Um die Excel-Zwischenablage mit VBA zu leeren, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hwnd As Long) As Long
    Private Declare Function CloseClipboard Lib "user32.dll" () As Long
    Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
    
    Public Sub ClipboardLeeren()
       Call OpenClipboard(0&)
       Call EmptyClipboard
       Call CloseClipboard
    End Sub
  4. Führe das Makro aus:

    • Du kannst das Makro nun ausführen, um die Zwischenablage zu leeren.

Häufige Fehler und Lösungen

  • Fehler: "Excel kann die zwischenablage nicht öffnen."

    • Überprüfe, ob andere Anwendungen die Zwischenablage verwenden. Schließe solche Anwendungen und versuche es erneut.
  • Problem mit dem Code:

    • Wenn dein Code nicht funktioniert oder eine Fehlermeldung anzeigt, stelle sicher, dass du die PtrSafe-Anweisung hinzufügst, wenn du eine 64-Bit-Version von Excel verwendest:
      Private Declare PtrSafe Function OpenClipboard Lib "user32.dll" (ByVal hwnd As LongPtr) As Long

Alternative Methoden

  • Verwendung eines DataObject: Eine weitere Möglichkeit, die Zwischenablage zu leeren, ist die Verwendung des DataObject-Objektes. Hier ist ein Beispiel:

    Sub LeerZwischenablage()
      Dim za_daten As New MSForms.DataObject
      za_daten.SetText ""
      za_daten.PutInClipboard
    End Sub
  • Excel zwischenablage leeren über die Benutzeroberfläche: Du kannst die Zwischenablage auch manuell leeren, indem du die Zwischenablage-Anzeige öffnest und dort die Einträge entfernst.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die Zwischenablage leeren kannst, nachdem du Daten kopiert hast:

Sub DatenKopierenUndLeeren()
    Worksheets("Tabelle1").Range("A1:B2").Copy
    ' Füge hier den Code zum Einfügen der Daten ein
    ClipboardLeeren ' Leert die Zwischenablage
End Sub

In diesem Beispiel wird zuerst ein Bereich aus Tabelle1 kopiert und danach die Zwischenablage mit der ClipboardLeeren-Subroutine geleert.


Tipps für Profis

  • Zwischenspeicher anzeigen: Nutze die MsgBox-Funktion, um den Inhalt der Zwischenablage anzuzeigen, bevor du sie leerst:

    MsgBox GetClipboardText()
  • Automatisierung: Integriere das Leeren der Zwischenablage in deine Arbeitsabläufe, um sicherzustellen, dass die Daten, die du in andere Anwendungen (wie Word) einfügst, nicht von vorherigen Kopiervorgängen beeinflusst werden.


FAQ: Häufige Fragen

1. Wie kann ich die Zwischenablage in Excel 64-Bit leeren? Um die Zwischenablage in einer 64-Bit-Version von Excel zu leeren, musst du die PtrSafe-Anweisung in deinen Deklarationen verwenden.

2. Funktioniert das Leeren der Zwischenablage in Excel 2013? Ja, das Leeren der Zwischenablage funktioniert auch in Excel 2013. Stelle sicher, dass der verwendete Code korrekt ist und keine Fehler enthält.

3. Warum bleiben die Daten in der Zwischenablage, obwohl ich sie geleert habe? Wenn andere Anwendungen die Zwischenablage verwenden oder wenn der Code nicht korrekt ausgeführt wird, kann es zu Problemen kommen. Überprüfe die Anwendung und den Code, um sicherzustellen, dass alles richtig funktioniert.

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