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

Forumthread: Zwischenablage in Variable und wieder zurück

Zwischenablage in Variable und wieder zurück
06.10.2005 13:48:03
Christian
Hallo Zusammen,
ich habe ein Problem mit der Zwischenablage:
Ich habe eine Arbeitsmappe ohne irgendwelche VBA-Makros (Mappe1). Ich habe eine weitere Mappe (Mappe2), die beim aktivieren bei einem Tabellenblatt das Tabellenblattpasswort zurücknimmt und nach Durchlauf eines Makros wieder setzt. Dies hat zur Konsequenz, daß Excel die Zwischenablage "vergißt".
Folgende Lösung hatte ich mir überlegt:

Sub Workbook_activate ()
dim zw as dataobject
set zw = new dataobject
zw.getfromclipboard
call makro
zw.putinclipboard
End Sub

Ich will also den Inhalt der Zwischenablage in eine Variable schreiben und später zurück in die Zwischenablage schreiben.
Funktioniert auch soweit, nur das Excel bei den Formaten ein wenig Schluckauf bekommt, was man auch daran sieht, daß die Funktion "Inhalte einfügen" ein Objekt einfügen will und nicht das bekannte Fenster, bei dem man z.B. nur Werte einfügen kann, geöffnet wird.
Hat jemand von Euch 'ne Lösung?
Vielen Dank im Voraus
Christian
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage in Variable und wieder zurück
06.10.2005 21:29:17
MichaV
Hallo,
das geht nicht, weil Windows den Ihnalt der Zwischenablage dann nicht mehr als Excel- Ursprung erkennt/ erkennen kann. Zwischenablage mit DataObject ist reiner Text.
Vielleicht ganz interessant: http://www.vbarchiv.net/workshop/workshop23s3.html
http://www.online-excel.de/fom/fo_read.php?f=1&bzh=2907&h=2907
Du müsstest irgendwie den Ihnalt in einem Sheet zwischenspeichern und von da wieder in die Zwischenablage kopieren. Aber da lauern sicher einige Probleme.
Gruß- Micha
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage in Variable und zurück in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Inhalt der Zwischenablage in eine Variable zu kopieren und später wieder zurückzuschreiben, kannst du folgenden VBA-Code verwenden:

  1. Öffne deine Excel-Arbeitsmappe.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Erstelle ein neues Modul über Einfügen > Modul.
  4. Füge den folgenden Code ein:
Sub Workbook_activate()
    Dim zw As DataObject
    Set zw = New DataObject
    zw.GetFromClipboard
    Call makro ' Hier wird dein Makro aufgerufen
    zw.PutInClipboard
End Sub
  1. Ersetze Call makro durch den Namen deines eigenen Makros.
  2. Schließe den VBA-Editor und teste den Code, indem du die Arbeitsmappe aktivierst.

Häufige Fehler und Lösungen

  • Problem: "Es gibt ein Problem mit der Zwischenablage"
    Lösung: Stelle sicher, dass der Inhalt der Zwischenablage nicht in einem Format ist, das von Excel nicht unterstützt wird. Manchmal kann es helfen, die Daten zuerst in ein Arbeitsblatt zu kopieren und dann von dort in die Zwischenablage zu übertragen.

  • Problem: "Die Funktion 'Inhalte einfügen' zeigt ein unerwartetes Fenster an"
    Lösung: Dies kann auftreten, wenn der Inhalt der Zwischenablage nicht als Excel-Objekt erkannt wird. Verwende zw.SetText und zw.PutInClipboard, um sicherzustellen, dass die Daten als Text in die Zwischenablage geschrieben werden.


Alternative Methoden

Eine weitere Möglichkeit, die Zwischenablage in Excel zu verwalten, besteht darin, die Daten temporär in einem Arbeitsblatt zu speichern:

  1. Kopiere die gewünschten Daten in ein Arbeitsblatt.
  2. Verwende den Range.Copy Befehl, um die Daten in die Zwischenablage zu kopieren.
  3. Wenn du die Daten benötigt, kannst du sie zurück in die Zwischenablage übertragen, ohne die DataObject-Klasse.

Hier ist ein Beispiel:

Sub ZwischenablageSpeichern()
    Sheets("Tabelle1").Range("A1").Copy
End Sub

Praktische Beispiele

Angenommen, du möchtest Daten aus einer Zelle in die Zwischenablage kopieren und dann wieder zurück:

Sub Beispiel()
    Dim zw As DataObject
    Set zw = New DataObject

    ' Daten aus Zelle A1 in die Zwischenablage kopieren
    zw.SetText Sheets("Tabelle1").Range("A1").Value
    zw.PutInClipboard

    ' Später kannst du die Daten zurück in die Zelle schreiben
    Sheets("Tabelle1").Range("B1").Value = zw.GetText
End Sub

In diesem Beispiel wird der Inhalt der Zelle A1 in die Zwischenablage kopiert und später in die Zelle B1 eingefügt.


Tipps für Profis

  • Nutze Application.CutCopyMode = False, um den Kopiermodus zu beenden, nachdem du die Daten eingefügt hast.
  • Überprüfe regelmäßig, ob die Zwischenablage leer ist, um Fehler zu vermeiden.
  • Arbeite mit WorksheetFunction für komplexere Datenmanipulationen, bevor du die Daten in die Zwischenablage schreibst.

FAQ: Häufige Fragen

1. Wie kann ich die Zwischenablage in Excel VBA auslesen?
Du kannst die Zwischenablage mit der DataObject-Klasse auslesen, indem du GetFromClipboard verwendest.

2. Gibt es Einschränkungen beim Kopieren von Inhalten in die Zwischenablage?
Ja, der Inhalt muss in einem unterstützten Format vorliegen. Wenn du z.B. Bilder oder spezielle Formatierungen hast, kann es sein, dass Excel diese nicht korrekt erkennt.

3. Was kann ich tun, wenn Excel die Zwischenablage "vergisst"?
In vielen Fällen hilft es, die Daten temporär in einem Arbeitsblatt zu speichern, bevor du sie wieder in die Zwischenablage kopierst.

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