Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
Inhaltsverzeichnis

VBA Office-Zwischenablage löschen?

VBA Office-Zwischenablage löschen?
23.12.2022 10:49:30
Ede
Hallo zusammen,
wie kann ich die Office-Zwischenablage mittels VBA löschen?
Trotz code unten zeigt er mir immer unten rechts bei Windows "24 von 24 - Zwischenablage" an.
Im Code verarbeite ich immer sehr große Datenmengen.
Danke!
Ede
Code:
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd As Long)
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard& Lib "user32" ()

Public Sub ClearClipboard()
OpenClipboard 0&
EmptyClipboard
CloseClipboard
End Sub
Aufruf:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ClearClipboard
End Sub

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Office-Zwischenablage löschen?
23.12.2022 11:34:01
Herbert_Grom
Hallo Ede,
probiers mal mit

ClearClipboard = True
Servus
AW: VBA Office-Zwischenablage löschen?
23.12.2022 11:52:16
Ede
Hallo Herbert_Grom,
leider nein, hat es nicht gelöscht.
VG,
Ede
AW: VBA Office-Zwischenablage löschen?
23.12.2022 12:13:52
Daniel
Dann
Application.CutCopyMode = False
Frohe Weihnacht Daniel
AW: VBA Office-Zwischenablage löschen?
23.12.2022 12:18:05
Ede
Hallo Daniel,
leider auch nicht!
Ich kann mir ja die Zwischenablage in Excel links einblenden lassen. Da ist noch alles drin. Dort kann ich dann per button alles löschen. Würde es aber gerne mit VBA haben.
Ebenfalls Frohe Weihnachten!
AW: VBA Office-Zwischenablage löschen?
23.12.2022 14:55:00
Ede
Hallo Werni,
was soll den der Bei-Kommentar? ich habe x mal gegoogelt und probiert, siehe auch meinen Code.
Und genau das was in einem Link enthalten ist, funktioniert bei mir nicht.
AW: VBA Office-Zwischenablage löschen?
23.12.2022 15:31:04
Piet
Hallo
ich habe eine saublöde Idee, aber meines Wissens funktioniert sie. Wenn es klappt lachhaft simpel!
Vor Range kannst du bei beiden auch noch ein Sheet angeben. Oder eine leere Zelle kopieren.
Probier es bitte mal aus, bin selsbst neugierig ob es damit klappt?

Sub löschen()
Range("A1").Copy Range("A1")
End Sub
Frohe Weihnachten und ein glückliches neues Jahr.
mfg Piet
Anzeige
AW: VBA Office-Zwischenablage löschen?
23.12.2022 15:27:23
snb

Private Declare Function AccessibleChildren Lib "Oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Sub M_Off_Clip_Clear()
Dim Acc As Office.IAccessible
With CommandBars("Office Clipboard")
.Visible = True
DoEvents
F_Acc(F_Acc(F_Acc(.accChild(1), 3), 0), 3).accDoDefaultAction 2&
Visible = False
End With
End Sub
Private Function F_Acc(myAcc As Office.IAccessible, myChildIndex As Long) As Office.IAccessible
y = myAcc.accChildCount
ReDim List(y)
If AccessibleChildren(myAcc, 0&, ByVal y, List(0), y) = 0& Then Set F_Acc = List(myChildIndex)
End Function

Anzeige
AW: Zw löschen geht, mit Anpassung
23.12.2022 16:48:09
Dieter(Drummer)
Hallo snb,
ich bin nicht der ursächliche Frager, aber mich interessierte deine Lösung und sie funktioniert, mit 2 Änderungen von mir:
Dein Code und meiene Änderung, Fett, ob das richtig ist, kann ich nicht sagen aber es fuktioniert und die Zw unter Excel wird geleert:
Änderung:
Private Declare Function AccessibleChildren Lib "Oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Sub M_Off_Clip_Clear()
Dim Acc As Office.IAccessible
With CommandBars("Office Clipboard")
.Visible = True
DoEvents
F_Acc(F_Acc(F_Acc(.accChild(1), 3), 0), 3).accDoDefaultAction 2&
.Visible = False 'Punkt fehlte
End With
End Sub

Private Function F_Acc(myAcc As Office.IAccessible, myChildIndex As Long) As Office.IAccessible
 Dim y As Long 'Ob ok, weiss ich nicht, geht aber
y = myAcc.accChildCount
ReDim List(y)
If AccessibleChildren(myAcc, 0&, ByVal y, List(0), y) = 0& Then Set F_Acc = List(myChildIndex)
End Function
Danke dir und schöne Weihnachten.
Gruß, Dieter (Drummer)
Anzeige
AW: Zw löschen geht, mit Anpassung
24.12.2022 15:44:07
snb
Hi Dieter,
Natürlicht weisst du auch das die Dim überflüssig ist. 'Option Explicit' löschen reicht.
Eben diese Variabele ist überflüssig.

Private Declare Function AccessibleChildren Lib "Oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Sub M_Off_Clip_Clear()
CommandBars("Office Clipboard").Visible = True
F_Acc(F_Acc(F_Acc(CommandBars("Office Clipboard").accChild(1), 3), 0), 3).accDoDefaultAction 2&
End Sub
Private Function F_Acc(myAcc As Office.IAccessible, myChildIndex As Long)
ReDim sn(myAcc.accChildCount)
If AccessibleChildren(myAcc, 0&, ByVal UBound(sn), sn(0), UBound(sn)) = 0& Then Set F_Acc = sn(myChildIndex)
End Function

Anzeige
AW: Neuer Code klappt perfekt
24.12.2022 15:55:35
Dieter(Drummer)
Hallo snb,
Danke für deinen neuen, kurzen Code, der perfekt funktioniert.
Gruß und schöne Weihnachtstage und alles Gute für das neue Jahr,
Dieter(Drummer´)
AW: VBA Office-Zwischenablage löschen?
24.12.2022 16:20:18
Ede
Danke!
Das scheint die Lösung zu sein. Wobei ich sie noch nicht wirklich verstanden habe.
Anscheinend reicht der Code, dass die Zwischenablage nicht mehr da ist? Also ohne manuelles ausführen?
Auf jeden Fall ist die Zwischenablage gar nicht mehr da.
Eigentlich wollte ich Script ausführen, welches die Zwischenablage dann löscht.
Ich prüfe mal weiter.
Danke nochmal und allen Frohe Weihnachten!
AW: VBA Office-Zwischenablage löschen?
24.12.2022 16:25:04
Ede
Hallo snb,
ja, den Code habe ich ja genommen.
Mit einfügen in ein leeres Modul ist nun die Zwischenablage komplett weg. Ohne das ich etwas ausführt habe.
Ist auch ok. Habe es nur nicht nachvollziehen können.
Danke nochmals.
AW: Zw ist immer noch da ...
24.12.2022 16:59:11
Dieter(Drummer)
Hallo Ede,
habe den neuesten Code von snb im Modul. Habe dann z.B. einen Button im Tabellenblatt der den Code aktiviert. Bei Klick auf Button wird der Inhalt der Zwischenablage komplett gelöscht und die Zwischenablage ist unverändert vorhanden. Bei geht es ohne Probleme, habe wohl Excel 2010.
Achtung: Ich habe aber die Zwischenablage geöffnet und nur dann wird der Inhat gelöscht. Wenn ich die Zwischenablage nicht vorher öffne, wird ein Fehler 9, Index ausserhalb des gülrigen Bereichs, in Zeile:
  • Set F_Acc = sn(myChildIndex)
  • angezeigt und dieser Teil ist gelb markiert.
    Evtl kann da snb auch noch helfen, dass die Zwischenablage per Makro vorher geöffnet und nach dem Leeren wieder geschlsoosen wird.
    Gruß und schöne Weihnachtstage,
    Dieter(Drummer)
    Anzeige
    AW: Zwischenablage open und close mit Sendkeys
    24.12.2022 17:52:24
    Dieter(Drummer)
    Hallo snb,
    habe einen Weg gefunden, mit Sendkeys die Zwischenablage zu öffnen und nach dem Leeren wieder zu schliessen.
    Brauche 2 Codes, da es für das Schliessen kein Sendkeys gibt. Man muss den gleichen Sendkeys zum öffnen und zum schliessen nutzen.
  • 
    Sub Zw_open()
    Application.SendKeys ("%R&F&O")
    End Sub
    

  • 
    Sub Zw_close()
    Application.SendKeys ("%R&F&O")
    End Sub
    

  • Gruß, Dieter(Drummer)
    AW: Noch kleiner Fehler
    24.12.2022 17:02:26
    Dieter(Drummer)
    Hallo snb,
    evtl kannst Du da auch noch helfen:
    Ich habe die Zwischenablage geöffnet und nur dann wird der Inhalt gelöscht. Wenn ich die Zwischenablage nicht vorher öffne, wird ein Fehler 9, Index ausserhalb des gülrigen Bereichs, in Zeile:
  • Set F_Acc = sn(myChildIndex)
  • angezeigt und dieser Teil ist gelb markiert.
    Evtl kannst du da auch noch helfen, dass die Zwischenablage per Makro vorher geöffnet und nach dem Leeren wieder geschlsoosen wird.
    Gruß, Dieter(Drummer)
    Anzeige
    AW: Jetzt klappt es prima
    24.12.2022 18:07:24
    Dieter(Drummer)
    Hallo snb,
    habe jetzt deinen Code mit Sendkeys angepasst und es funktioniert perfekt. Zwischenablage wird geöffnet, geleert und dann wirder geschlossen.
    Danke dir für deine Hilfe und prima Lösung.
    Gruß, Dieter(Drummer)
    Hier dein jetziger angepasster Code:
    'Code von Herber: snb vom 24.12.2022 15:44:07
  • Private Declare Function AccessibleChildren Lib "Oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
    'Code von Herber: snb vom 24.12.2022 15:44:07
    Sub M_Off_Clip_Clear()
    CommandBars("Office Clipboard").Visible = True
    Application.SendKeys ("%RFO") 'Mx: 24.12.2022
    F_Acc(F_Acc(F_Acc(CommandBars("Office Clipboard").accChild(1), 3), 0), 3).accDoDefaultAction 2&
    End Sub

  • 'Code von Herber: snb vom 24.12.2022 15:44:07
  • 
    Private Function F_Acc(myAcc As Office.IAccessible, myChildIndex As Long)
    ReDim sn(myAcc.accChildCount)
    If AccessibleChildren(myAcc, 0&, ByVal UBound(sn), sn(0), UBound(sn)) = 0& Then Set F_Acc = sn(myChildIndex)
    End Function
    

  • Anzeige
    AW: Jetzt klappt es prima
    25.12.2022 12:15:36
    snb
    @Dieter:
    Bitte, verwende Code Tags.
    Du brauchst kein 'Sendkeys'.
    
    Private Declare Function AccessibleChildren Lib "Oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
    Sub M_Off_Clip_Clear()
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
    Sheet1.Cells(1).Select
    With Application.CommandBars("Office Clipboard")
    .Visible = True
    On Error Resume Next
    F_Acc(F_Acc(F_Acc(.accChild(1), 3), 0), 3).accDoDefaultAction 2&
    .Visible = False
    End With
    End Sub
    Private Function F_Acc(myAcc, myChildIndex)
    ReDim sn(myAcc.accChildCount)
    If AccessibleChildren(myAcc, 0&, ByVal UBound(sn), sn(0), UBound(sn)) = 0& Then Set F_Acc = sn(myChildIndex)
    End Function
    

    AW: Danke snb, ich melde mich ...
    25.12.2022 12:57:15
    Dieter(Drummer)
    Hallo snb,
    ... morgen zum Testen. Danke dir erstmal und melde mich.
    Gruß und schöne Weihnachten.
    Dieter(Drummer)
    AW: Klappt so nicht
    25.12.2022 18:18:52
    Dieter(Drummer)
    Guten Abend snb.
    Dein neuer Code klappt so nicht, Es wird Fehler angezeigt "Laufzeitfehler 9, Index außerhalb des gültigen Bereichs". Habe auch "Sheet1" durch "ActiveSheet" ersetzt.
    Ist aber auch kein Problem, da ich ja mit "Sendkeys" eine funktionierende Variante von dir habe. Danke nochmal dafür ...
    Gruß, Dieter(Drummer)
    Hier meine Musterdatei mit dem Code deiner letzten Meldung an mich: https://www.herber.de/bbs/user/156938.xlsm
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige