VBA-Excel Zwischenablage leeren

Moin,
kann mir jemand sagen, wie ich unter VBA die Zwischenablage leeren kann.
Manuell habe ichs schon rausgefunden, aber ich brauche leider den Programmierbefehl.
*Dank euch*

Hallo,

kann mir jemand sagen, wie ich unter VBA die Zwischenablage
leeren kann.

Clipboard.Clear

Manuell habe ichs schon rausgefunden.

Ich nicht. Ich kenne nur den Code. Wie würde das manuell denn gehen? Eventuell brauche ich das ja auch mal.

Gruß Rainer

Hi,

Application.CutCopyMode = False

wenn ich mich dunkel erinnere.

Gruss
Joey

Hallo Miss,

kann mir jemand sagen, wie ich unter VBA die Zwischenablage
leeren kann.

Wozu? Quillt sie über?

Probiers mal so:

Sub tt()
Application.CommandBars(„Clipboard“).Visible = True
Application.CommandBars(„Clipboard“).FindControl(ID:=3634).Execute
Application.CommandBars(„Clipboard“).Visible = False
End Sub

Manuell habe ichs schon rausgefunden,

Was meinst du mit manuell, das Fenster Zwischenablage einblenden und dort irgendwo auf „leeren“ klicken oder meinst du etwas anderes?

Gruß
Reinhard

Nachtrag
hallo,

Weil Joey widerspricht … Ich habe geschrieben, wie es mit VB geht, in der Annahme, es würde mit VBA auch funktionieren.
Wenn es nicht geht, sorry.

Gruß Rainer

hola,
mit manuell meine ich, dass ich gelesen habe, dass man den zwischenspeicher deaktivieren kann,aber das will ich ja nicht.
ich habe eine riiiiesige datei vorliegen, habe einen vba code generiert, der die datei nach gewissen kriterien duchsucht und scheitere immer daran, dass ich mir damit die zwischenablage vollballer. also dachte ich, dass ich zwischen durch immer mal wieder einen „löschbefehl“ generiere.
so, ich probiers jeetzt mal…

Hola Senorita,

mit manuell meine ich, dass ich gelesen habe, dass man den
zwischenspeicher deaktivieren kann,aber das will ich ja nicht.

du hast es gelesen aber noch nicht gemacht?

ich habe eine riiiiesige datei vorliegen,

Wieviele TeraByte? :smile:

habe einen vba code
generiert, der die datei nach gewissen kriterien duchsucht und
scheitere immer daran, dass ich mir damit die zwischenablage
vollballer.

Was geschieht denn dann? Wie sieht der Code aus?

so, ich probiers jeetzt mal…

Ja, verschiedene Ansätze dazu hast du ja bekommen.

Gruß
Reinhard

Hi,
ich käme gar nicht darauf zu widersprechen :smile:
Meist gibt es ja aber viele Wege die nach Rom führen.

Gruss
Joey

Weil Joey widerspricht … Ich habe geschrieben, wie es mit VB
geht, in der Annahme, es würde mit VBA auch funktionieren.
Wenn es nicht geht, sorry.

hallo Rainer,

ich sehe da keinen Widerspruch, eher einen anderen Ansatz.

Mein Problem mit der Zwischenablage ist folgender Natur.

Ich kenne zwar die Vba-Anweisungen GetFromClipboard bzw. PutIntoClipboard.

Damit kann ich Texte auslesen und reinschreiben.

Ich habe jetzt nicht geschaut, bei beiden gibt es glaub einen parameter mit dem ich ein anderes Objekt als einen Text „behandeln“ kann.

Jetzt nicht so wichtig, kann man ja nachlesen.

Was du möglicherweise von VB her nicht kennst, wenn man in MS-Office mehrmals etwas kopiert, so erscheint auf einmal, mir unklar wann, ein Fensterchen der Zwischenablage wo angezeigt wird daß nun alle 12 (oder sinds 24 je nach Officeversion?) Zwischenablagen gefüllt sind.

Okay, was ich nicht kenne und nicht brauche klicke ich weg. Aber es macht den Eindruck als könnte ich da irgendwie 5 Objekte von was auch immer, also mehr als nur Text, nacheinander kopieren und bei Bedarf dann sagen wir mal das 4te Objekt irgendwo einfügen.

Wie das gehen soll ist mir sehr unklar.

Also Frage, wie lese ich in diese 12/24 Zwischenspeicherabteilungen ein und wieder aus?

Gruß
Reinhard

Hallo Reinhard,

das klingt interessant.

Mir ist bisher nur aufgefallen, daß es nichts bringt, einfach Daten in die Zwischenablage zu schieben, beim Lesen bekommt man etwas anderes, älteres. Als Vorbereitung lösche ich deshalb die Zwischenablage erst.

Daß da scheinbar ein Stack ist, war mir bis eben nicht bekannt. Das werde ich mir mal genauer ansehen, dake für den Tipp! :smile:

Übrigens … Text und andere Daten werden getrennt verwaltet.

Ich kann mit Clipboard.GetData / .SetData / .GetText / .SetText
bunt durcheinander Bilder und Text völlig unabhängig voneinander in der Zwischenablage verwalten.

Mal sehen, ob ich auch noch einen Hinweis auf die Stack finde. :smile:

Gruß Rainer

hallo Rainer,

das klingt interessant.
Mir ist bisher nur aufgefallen, daß es nichts bringt, einfach
Daten in die Zwischenablage zu schieben, beim Lesen bekommt
man etwas anderes, älteres. Als Vorbereitung lösche ich
deshalb die Zwischenablage erst.

das finde ich nun wieder sehr interessant=unbekannt.

Ich benutze ja meinen Code in FAQ:2606 sehr oft, da greife ich ja auch auf das Clipboard zu, okay, nur mit reinem Text, da hatte ich noch nie das Proplem daß da was „Altes“ ausgelesen wurde.

Daß da scheinbar ein Stack ist, war mir bis eben nicht
bekannt. Das werde ich mir mal genauer ansehen, dake für den
Tipp! :smile:

Tut mir leid, weil ich glaube du kennst das Zwischenablage Fensterchen nicht kennst daß irgendwann kommt, hätte ich dir gerne gezeigt wie es aussieht und wie man es herausprovoziert.

Naja, Vorführeffekt. Ivh habe eben kurz mal zwischen Word und Excel Bilder und Text abwechselnd kopiert und einfügt.
Natürlich kam das Mistfenster nicht :frowning:

Übrigens … Text und andere Daten werden getrennt verwaltet.

Ich kann mit Clipboard.GetData / .SetData / .GetText /
.SetText
bunt durcheinander Bilder und Text völlig unabhängig
voneinander in der Zwischenablage verwalten.

Ja, ich galub ich hab ja gesagt, es gibt neben Text noch etwas anderes.
Ob das nun Bilder sind oder ganze Tabellenblätter sein können glaube das aber, weiß ich aber grad nicht, krieg ich ja raus wenn ich das mal brauche.

Mich interessiert derzeit vielmehr, wie greife ich auf das 5te abgespeicherte Objekt der Zwischenablage zu.

*Aaaaaargs*, Mann bin ich blöd *zusammenbrech*

Grad eben erst komme ich drauf wie ich dir das Fensterchen zeigen kann damit wir vom gleichen reden können.

Im anderen Beitrag von mir habe ich ja Code gepostet.
Schmeiß das untere .Visible=False raus, dann siehste das Fensterchen in Excel.

Genau das, oder sehr ähnlich, ist das Fensterchen was sporadisch bei Office kommt.

Gruß
Reinhard

Hallo Reinhard,

Im anderen Beitrag von mir habe ich ja Code gepostet.
Schmeiß das untere .Visible=False raus, dann siehste das
Fensterchen in Excel.

hab’ ich getan.
Wir, also excel und ich *gg*, verstehen eine Zeile nicht.

Application.CommandBars("Clipboard").FindControl(ID:=3634).Execute

Was ist das für eine ID? Mir sagt das nichts und Excel mag die Zeile auch nicht. :frowning:

Ich bin dem noch nicht näher gekommen. Für VB habe ich noch keine Hinweise gefunden, daß ich z.B. zwei verschiedene Texte in die Zwischenablage schreiben kann und auf die mit einem Index zugreifen.
In der Hilfe steht ausdrücklich daß mit Clipboard.SetText vorhandene Texte überschrieben werden.

Das Rätsel werde ich ohne Hilfe nicht lösen können.
Ich schreibe mal etwas Code dazu, von dem ich nicht erwarte, daß es etwas nützt und frage dann damit bei AVB. Wenn man den Stack, den es da scheinbar gibt nutzen kann, dann weiß dort Jemand wie. :smile:

Gruß Rainer

Zwischenablage aufrufen löschen verstehen
Hallo Rainer,

Application.CommandBars(„Clipboard“).FindControl(ID:=3634).Execute

Was ist das für eine ID? Mir sagt das nichts und Excel mag die
Zeile auch nicht. :frowning:

nö, dein Excel mag die Zeile nicht , mein XL2000 schon :smile:

Id=3634 ist „&Zwischenablage leeren“, bei mir.

Siehe hier:

http://www.bilder-space.de/show.php?file=12.08xZTAZi…

Kopiere mal in Excel nacheinander mehrere beschriebene zellen mit Strg+c. Vielleicht auch ein Steuerelemt oder Bilder.

Dann lasse mal den Code laufen.

Achja, wenn die Symbolleiste sichtbar ist, siehst du nach jedem Strg+c wie sich ein neues Feld der Zwischenablage füllt.

Bei mir sind es 12 Felder, unbestätigt hörte ich aber auch schon von 24 Feldern.

Sub dd()
Dim c
Application.CommandBars("Clipboard").Visible = True
For Each c In Application.CommandBars("Clipboard").Controls
 MsgBox c.ID & "---" & c.Caption
Next c
End Sub

Ich bin dem noch nicht näher gekommen. Für VB habe ich noch
keine Hinweise gefunden, daß ich z.B. zwei verschiedene Texte
in die Zwischenablage schreiben kann und auf die mit einem
Index zugreifen.

Vielleicht geht daß nur in Vba? *rat*

In der Hilfe steht ausdrücklich daß mit Clipboard.SetText
vorhandene Texte überschrieben werden.

Wenn auch in Vba dies nicht so geht

Sub tt()
clipboard.SetText „ddd“
End Sub

so sehe ich da auch so, in der Zwischenablage kann nur ein einziger Text sein. Von daher hat mich ja erstaunt daß bei dir älterer Text wieder auftaucht.

Ich schreibe so Text in die Zwischenablage:

Set MyData = New DataObject
MyData.SetText TextBox1.Text
MyData.PutInClipboard

Wenn ich den nachfolgenden Hilfstext richtig verstehe kann es pro Format alles nur einmalig geben.
Aber verschiedene Formate gleichzeitig, oder so *gg*
So genau blicke ich da noch nicht durch.

Wie auch immer, dazu passt absolut nicht daß man in Excel 12 Felder der zwischenablage sogar sehen kann.

Aus der Vba-Hilfe (XL2000)

Was ist der Unterschied zwischen dem DataObject-Objekt und der
Zwischenablage?

Sowohl das DataObject-Objekt als auch die Zwischenablage stellen eine
Möglichkeit bereit, Daten von einem Platz an einen anderen zu
verschieben. Als Anwendungsentwickler sollten Sie einige wichtige
Punkte berücksichtigen, bevor Sie entweder ein DataObject-Objekt oder
die Zwischenablage verwenden:

Sowohl in dem DataObject-Objekt als auch in der Zwischenablage können
Sie mehrere Datenelemente gleichzeitig speichern, sofern jedes
Datenelement ein anderes Datenformat besitzt. Speichern Sie Daten mit
einem Format, das bereits verwendet wird, so werden die neuen Daten
gespeichert und die alten Daten verworfen.

Die Zwischenablage unterstützt Bild- und Textformate. Ein DataObject-
Objekt unterstützt derzeit nur Textformate.

Ein DataObject-Objekt existiert nur während der Ausführung Ihrer
Anwendung; die Zwischenablage existiert, solange das Betriebssystem
ausgeführt wird. Mit anderen Worten, Sie können Daten in der
Zwischenablage ablegen und dann eine Anwendung schließen, ohne die
Daten zu verlieren. Dies ist mit dem DataObject-Objekt nicht möglich.
Sobald Sie die Anwendung schließen, die die Daten in einem DataObject-
Objekt abgelegt hat, verlieren Sie diese Daten.

Ein DataObject-Objekt ist ein Standard-OLE-Objekt, die Zwischenablage
jedoch nicht. Das bedeutet, dass die Zwischenablage allgemeine
Verschiebeoperationen (Kopieren, Ausschneiden und Einfügen) unterstützen kann, jedoch keine Drag & Drop-Operationen. Sie müssen
das DataObject-Objekt verwenden, wenn Ihre Anwendung Drag &
Drop-Operationen unterstützen soll.

Tipp Sie können eigene Namen für Datenformate definieren, wenn Sie
die SetText-Methode verwenden, um Daten in die Zwischenablage oder in
ein DataObject-Objekt zu verschieben. Auf diese Weise wird die
Unterscheidung zwischen Text, der von der Anwendung oder den
Benutzern verschoben wird, erleichtert.

Gruß
Reinhard

Hallo Reinhard,

http://www.bilder-space.de/show.php?file=12.08xZTAZi…

hübsch! :smile: Das habe ich hier noch nicht zu sehen bekommen.

Ich bin ganz offensichtlich für Excel und VBA zu blöd. :frowning:

Um herauszufinden, wie der ‚Commandbar‘ aussieht habe ich mal …

Option Explicit

Private Sub CommandButton1\_Click()
 Application.CommandBars("Clipboard").Visible = True
End Sub

Private Sub CommandButton2\_Click()
 Application.CommandBars("Clipboard").Visible = False
End Sub

… nichts passiert. Nichts, auch kein Fehler.

Auch mit Deinem Code passiert nichts.
Keine Fehlermeldung, aber auch keine Reaktion.
Die Schleife ‚For Each‘ wird nicht durchlaufen, keine Elemente.
Excel mault aber auch nicht über den Code.

Excel weiß scheinbar, wie gut ich es leiden kann und ignoriert mich.

Gruß Rainer

Hallo Rainer,

http://www.bilder-space.de/show.php?file=12.08xZTAZi…

hübsch! :smile: Das habe ich hier noch nicht zu sehen bekommen.

ja, schön bunt, hättest sicher nicht gedacht daß die Zwischenablage so bunt sein kann *gg*
Übrigens, mit Ansicht–Symbolleisten–Zwischenablage müßtest du es auch sehen können.

Ich bin ganz offensichtlich für Excel und VBA zu blöd. :frowning:

Kwark *schelt*

… nichts passiert. Nichts, auch kein Fehler.

Welche Excelversion hast du denn?
Btw. Steht das nicht so in der Brettbeschreibung, daß man brav immer die Version anzugeben hat?
Bin gespannt was darauf antwortest. Entweder steht es nicht in der Brettbeschreibung, dann ist daß ein Fehler des Mods.
Oder es steht drin und du hast sie vor zu langer Zeit mal gelesen :smile:)

Auch mit Deinem Code passiert nichts.

Momentan kann ich mir da keinen Reim darauf machen, auch deine zwei Codes klappten bei mir problemlos.

Bei höheren Versionen als 2000 muß man nach der Installation von Excel irgendwo ein-zwei Häkchen setzen entfernen.
Sonst läuft gar kein Makro in Excel. Auch grad selbstgeschriebener Code *glaub*

Irgendwas mit Vertrauen sie den Vba-Makros oder so.
Irgendwo bei Extras–Optionen, Schutz, o.ä.

Allerdings wenn du schon makros schreiben und ausführen konntest, entfällt das, dann stimmen wohl die Häkchen.

Damit meine ich nicht die Makrosicherheit, die sollte immer auf „Mittel“ o.ä." stehen sodaß das man bei jedem Mappenöffnen gefragt wird ob man in der Mappe die Makros aktivieren will oder nicht.

Gruß
Reinhard

Hallo Reinhard,

Übrigens, mit Ansicht–Symbolleisten–Zwischenablage müßtest
du es auch sehen können.

Ansicht -> Symbolleisten … Zwischenablage? Nein, ist da nicht.

Welche Excelversion hast du denn?

Excel 2003 SP3, Office Basic-Edition.
Ich muss mir wohl mal eine bessere Edition kaufen lassen. :frowning:

Btw. Steht das nicht so in der Brettbeschreibung, daß man brav
immer die Version anzugeben hat?

Klar, aber wer liest schon Brettbeschreibungen? *gg*

Bei höheren Versionen als 2000 muß man nach der Installation
von Excel irgendwo ein-zwei Häkchen setzen entfernen.
Sonst läuft gar kein Makro in Excel. Auch grad
selbstgeschriebener Code *glaub*

Ja, das ist richtig eingestellt. Ich kann programmieren und der Code wird auch ausgeführt. Natürlich nachdem Excel die Erlaubnis eingeholt hat.

Es wird wohl an der billigen ‚Basisversion‘ liegen. Anscheinend hast Du einen Funktion, die für Dein Office spezifisch ist. Da haben Dir die Jungs aus Redmond einen netten Service eingebaut, den ich für mein kleines Geld nicht bekommen habe. Das bedeutet aber auch, daß das Office ist und nicht Windows. Von VB6 aus werde ich da nicht herankommen.

Ich habe inzwischen auch noch mal einen Code geschrieben, der zeigen sollte, wie das falsche Objekt aus der Zwischenablage eingefügt wird … Ich kann es nicht mehr nachvollziehen. Vermutlich hat sich da in der Erinnerung ein Ergebnis mit einer falschen Ursache verknüpft.

Gruß Rainer

hallo Rainer,

Ansicht -> Symbolleisten … Zwischenablage? Nein, ist da
nicht.

Aha, da wohl Vba das bei dir nicht kennt und es bei den Symbolleisten nicht sichtbar ist kennt dein Excel das wohl nicht.

Das es bei den Symbolleisten nicht sichtbar ist, hat an sich gar nix zu bedeuten. Excel sind viel mehr Symbolleisten und CommandBars und Controls bekannt als angezeigt wird im Standard-Excel.

Aber bei deinem Fall bin ich überzeugt, dein Excel kennt das einfach nicht.

Welche Excelversion hast du denn?

Excel 2003 SP3, Office Basic-Edition.

Ich habe keinen blassen Dunst was nun „Basic Edition“ genau bedeutet.

Ich mache mich gerne schlau was das ist, ggfs. auch speziell mit der Symbolleiste Zwischenablage, sehe da aber wenig Sinn drin.
Weil ich wie oben schon gesagt davon überzeugt bin daß es das in deiner Version einfach nicht gibt.

Sag Bescheid, wenn ich mich trotzdem nach „Basic-Edition“ erkundigen soll.

Ich muss mir wohl mal eine bessere Edition kaufen lassen. :frowning:

Tja nun, du nimmst ja nur Originalsoftware, ich natürlich auch nur *beteuer* *grins*
da sehe ich halt keine Möglichkeit dir zu helfen.

Btw. Steht das nicht so in der Brettbeschreibung, daß man brav
immer die Version anzugeben hat?

Klar, aber wer liest schon Brettbeschreibungen? *gg*

Tztz, wo bleibt deine Vorbildfunktion? :smile:

Es wird wohl an der billigen ‚Basisversion‘ liegen.
Anscheinend hast Du einen Funktion, die für Dein Office
spezifisch ist. Da haben Dir die Jungs aus Redmond einen
netten Service eingebaut, den ich für mein kleines Geld nicht
bekommen habe. Das bedeutet aber auch, daß das Office ist und
nicht Windows. Von VB6 aus werde ich da nicht herankommen.

Ja, irgendwie denke ich ohne da was genau zu wissen, die zwischenablage in der ich z.B. hier in w-w-w etwas mit Strg+c kopieren kann, eine andere ist, als diese mit den bei mir 12 Feldern.
Aber sind noch viele Fragen offen.

Ich habe inzwischen auch noch mal einen Code geschrieben, der
zeigen sollte, wie das falsche Objekt aus der Zwischenablage
eingefügt wird … Ich kann es nicht mehr nachvollziehen.
Vermutlich hat sich da in der Erinnerung ein Ergebnis mit
einer falschen Ursache verknüpft.

Ja, das kenne ich. Man erlebt etwas mit Code o.ä., irgendwas Seltsames und es klappt einfach nicht dies später nachzustellen um Andere fragen zu können.
Garantiert waren bei dem Erlebnis die Startbedingungen für einen Code in irgedneiner Weise anders als dann wenn man es nachgestellt.

Daruaf dann zu kommen was da anders war ist heftigst schwierig *find*

@Rainer, ich sehe die Problematik als nicht gelöst aber erledigt an.
Ich habe schon versucht für das Archiv den Betreff zu verbessern. hast du eine bessere idee für den Betreff dann mach das.

Ansonsten wäre ich dafür hier das zu beenden und ggfs. einen neuen Artikel einzustellen wenn sich was neues dort ergibt wo du nachfragen wolltest.

Gruß
Reinhard