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 schreiben

Zwischenablage in Variable schreiben
marspoki
Hallo,
ich habe noch eine kleine Frage.
Ich möchte gerne einen Wert aus der Zwischenablage in eine Variable schreiben.
Wie kann ich das denn machen?
Vielen Dank schonmal
Beste Grüße
Sebastian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: aus dem Archiv ...
25.03.2010 18:23:46
marspoki
Damit komm ich ja mal gar nicht klar!! fgibts da nicht so eine Lösung wie
a = Zwischenablageninhalt?
AW: Zwischenablage in Variable schreiben
25.03.2010 23:05:21
dan
Hallo Sebastian,
hier zwei Moeglichkeiten (Funktionen), die Text aus der Zwischenablage holen. Die zweite Moeglichkeit benutzt DataObject, und der befindet sich in der MsForms Lib, also: ' Tools --> References --> Microsoft Froms 2.0 Object Library anchecken...Gruss dan, cz.
Option Explicit
Public Function GetTextFromClipBoard1() As String
Dim workSheet1 As Worksheet
Dim range1 As Range
Dim formats As Variant
Dim format As Variant
Dim text As String
Application.ScreenUpdating = False
Workbooks.Add
Set range1 = ActiveSheet.Range("a1")
formats = Application.ClipboardFormats
text = ""
For Each format In formats
If (format = xlClipboardFormatText) Then
ActiveSheet.Paste Destination:=range1
Exit For
End If
Next format
If (Not ActiveSheet.UsedRange Is Nothing) Then
Dim row As Range
Dim column As Range
For Each row In ActiveSheet.UsedRange.Rows
For Each column In row.Cells
text = text & column.text
Next column
text = text & vbCrLf
Next row
End If
GetTextFromClipBoard1 = text
ActiveWorkbook.Close savechanges:=False
Application.ScreenUpdating = True
End Function

Public Function GetTextFromClipBoard2() As String
Dim dataObject1 As DataObject ' Tools --> References --> Microsoft Froms 2.0 Object Library
Dim isTextInClipboard As Boolean
Dim text As String
Set dataObject1 = New DataObject
text = ""
' Copies data from the Clipboard to a DataObject
dataObject1.GetFromClipboard
' Returns an integer value indicating whether a specific format is on the DataObject
isTextInClipboard = dataObject1.GetFormat(1)
If (isTextInClipboard) Then
text = dataObject1.GetText(1)
End If
GetTextFromClipBoard2 = text
End Function

' Beispiel:
Option Explicit
Private Sub CommandButton1_Click()
Dim text As String
text = GetTextFromClipBoard1
[a1] = text
End Sub

Private Sub CommandButton2_Click()
Dim text As String
text = GetTextFromClipBoard2
[a1] = text
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage in Variable schreiben


Schritt-für-Schritt-Anleitung

Um den Inhalt der Zwischenablage in eine Variable zu speichern, kannst Du die folgenden VBA-Funktionen verwenden. Hier sind die Schritte:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke auf Einfügen > Modul.
  3. Füge den folgenden Code in das Modul ein:
Public Function GetTextFromClipBoard1() As String
    Dim workSheet1 As Worksheet
    Dim range1 As Range
    Dim formats As Variant
    Dim format As Variant
    Dim text As String
    Application.ScreenUpdating = False
    Workbooks.Add
    Set range1 = ActiveSheet.Range("a1")
    formats = Application.ClipboardFormats
    text = ""
    For Each format In formats
        If (format = xlClipboardFormatText) Then
            ActiveSheet.Paste Destination:=range1
            Exit For
        End If
    Next format
    If (Not ActiveSheet.UsedRange Is Nothing) Then
        Dim row As Range
        Dim column As Range
        For Each row In ActiveSheet.UsedRange.Rows
            For Each column In row.Cells
                text = text & column.Text
            Next column
            text = text & vbCrLf
        Next row
    End If
    GetTextFromClipBoard1 = text
    ActiveWorkbook.Close SaveChanges:=False
    Application.ScreenUpdating = True
End Function
  1. Füge eine zweite Funktion hinzu:
Public Function GetTextFromClipBoard2() As String
    Dim dataObject1 As DataObject ' Tools --> References --> Microsoft Forms 2.0 Object Library
    Dim isTextInClipboard As Boolean
    Dim text As String
    Set dataObject1 = New DataObject
    text = ""
    ' Kopiert Daten von der Zwischenablage in ein DataObject
    dataObject1.GetFromClipboard
    ' Überprüft, ob ein bestimmtes Format im DataObject vorhanden ist
    isTextInClipboard = dataObject1.GetFormat(1)
    If (isTextInClipboard) Then
        text = dataObject1.GetText(1)
    End If
    GetTextFromClipBoard2 = text
End Function
  1. Verwende die Funktionen in einem Button oder Makro:
Private Sub CommandButton1_Click()
    Dim text As String
    text = GetTextFromClipBoard1
    [A1] = text
End Sub

Private Sub CommandButton2_Click()
    Dim text As String
    text = GetTextFromClipBoard2
    [A1] = text
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass Du die Microsoft Forms 2.0 Object Library aktiviert hast. Gehe zu Extras > Verweise und aktiviere die Bibliothek.
  • Fehler: Der Inhalt der Zwischenablage ist leer

    • Überprüfe, ob Du tatsächlich etwas in die Zwischenablage kopiert hast, bevor Du die Funktion aufrufst.

Alternative Methoden

Eine andere Methode, um den Inhalt der Zwischenablage in eine Excel-Variable zu speichern, ist die Verwendung von Application.CutCopyMode. Diese Methode kann jedoch weniger flexibel sein und funktioniert möglicherweise nicht in allen Szenarien.


Praktische Beispiele

Angenommen, Du hast einen Text in Word oder einem anderen Dokument kopiert und möchtest diesen in Excel verwenden:

  1. Kopiere den gewünschten Text.
  2. Klicke in Excel auf den Button, der das Makro ausführt.
  3. Der Text wird automatisch in die Zelle A1 eingefügt.

Du kannst die Funktionen auch anpassen, um den Text in eine andere Zelle zu schreiben oder ihn weiter zu verarbeiten.


Tipps für Profis

  • Um die Effizienz zu erhöhen, kannst Du die Funktionen so modifizieren, dass sie direkt mehrere Zellen füllen, je nach dem, wie viel Text in der Zwischenablage enthalten ist.
  • Überlege, die Funktionen in ein add-in zu integrieren, um sie in verschiedenen Excel-Dateien wiederverwenden zu können.

FAQ: Häufige Fragen

1. Wie kann ich die Inhalte der Zwischenablage in eine Excel-Textvariable speichern?
Du kannst die oben beschriebenen VBA-Funktionen verwenden, um den Inhalt der Zwischenablage direkt in eine Variable zu speichern.

2. Funktioniert das in allen Excel-Versionen?
Die beschriebenen Methoden sind in den meisten modernen Excel-Versionen (Excel 2010 und höher) anwendbar. Stelle sicher, dass die Microsoft Forms 2.0 Object Library aktiviert ist.

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