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

Forumthread: VBA: Kopieren in die Zwischenablage funkt nicht

VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 15:52:19
Tim
Hallo,
ich habe eine UserForm und möchte dort gerne per Button-Klick den Text einer Textbox in die Zwischenablage kopieren.
Bisher habe ich folgenden Code:
Private Sub BtnCopySql_Click()
Dim varResults As New DataObject
With varResults
.SetText varSql ' identisch zu Me.TxtSql.Text
.PutInClipboard
End With
Unload Me
End Sub
Das funktioniert leider nicht und kopiert mir gar nichts (bzw, je nach Editor, nur 2 Fragezeichen) in die Zwischenablage.
An der Variablen (varSql) liegt es nicht, denn wenn ich sie zum testen in einer Message Box anzeige, erscheint der Text korrekt.
Kann mir jemand sagen, wo hier der Fehler liegt oder ob es einen besseren / alternativen Weg dafür gibt ?
VG und vielen Dank im Voraus,
Tim
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 16:21:05
Werner
Hallo Tim,
Private Sub CommandButton1_Click()
Dim objClip As DataObject
Dim strTemp As String
Set objClip = New DataObject
strTmp = Me.TextBox1.Text
objClip.SetText strTmp
objClip.PutInClipboard
End Sub
Gruß Werner
AW: VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 16:24:19
Tim
Hallo Werner,
vielen Dank für die schnelle Antwort.
Du hast strTmp einmal mit e geschrieben, aber wenn ich das korrigiere, ist das Problem das gleiche wie bei mir.
VG,
Tim
Anzeige
AW: VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 16:38:35
Werner
Hallo Tim,
keine Ahnung, kann dir nur sagen, dass es bei mir geht. Ich habe jetzt mal auf deine Variablennamen angepasst.
Private Sub CommandButton1_Click()
Dim varResults As DataObject
Dim varSql As String
Set varResults = New DataObject
varSql = Me.TextBox1.Text 'Name der TextBox anpassen
varResults.SetText varSql
varResults.PutInClipboard
Unload Me
End Sub
Gruß Werner
Anzeige
AW: VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 16:44:04
Tim
Danke, Werner !
Offenbar lag es daran, dass mein Zwischenspeicher voll war ? Ich habe jetzt mal alle möglichen temporären Dateien etc. gelöscht und neu gestartet und jetzt funktioniert es wieder - mit beiden Lösungen.
Seltsam aber vielleicht hat es damit zu tun, dass ich hier größere Dantenmengen in die Zwischenablage kopiere.
VG,
Tim
Anzeige
AW: VBA: Kopieren in die Zwischenablage funkt nicht
02.03.2017 17:00:12
Werner
Hallo Tim,
vorher zur Sicherheit einfach leeren?
Private Sub CommandButton1_Click()
Dim varResults As DataObject
Dim varSql As String
Set varResults = New DataObject
varSql = ""
varResults.SetText varSql
varResults.PutInClipboard
Set varResults = New DataObject
varSql = Me.TextBox1.Text 'Name der TextBox anpassen
varResults.SetText varSql
varResults.PutInClipboard
Unload Me
End Sub
Gruß Werner
Anzeige
AW: Noch eine Änderung
02.03.2017 18:29:15
Werner
Hallo Tim,
noch eine kleine Änderung. Ansonsten knallt es, wenn deine TextBox leer ist und du den Button betätigst.
Private Sub CommandButton1_Click()
Dim varResults As DataObject
Dim varSql As String
Set varResults = New DataObject
varSql = ""
varResults.SetText varSql
varResults.PutInClipboard
Set varResults = New DataObject
varSql = Me.TextBox1.Text 'Name der TextBox anpassen
If Not varSql = vbNullString Then
varResults.SetText varSql
varResults.PutInClipboard
End If
Unload Me
End Sub
Gruß Werner
Anzeige
AW: Noch eine Änderung
03.03.2017 16:57:31
Tim
Hallo Werner,
vielen Dank nochmal für die Ergänzungen - das funktioniert super so. :)
VG und ein schönes WE,
Tum
Gerne u. Danke für die Rückmeldung. o.w.T.
03.03.2017 19:39:31
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Text in die Zwischenablage kopieren


Schritt-für-Schritt-Anleitung

Um Text aus einer TextBox in einer UserForm in die Zwischenablage zu kopieren, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Erstelle eine UserForm:

    • Füge eine UserForm hinzu und platziere eine TextBox (z.B. TextBox1) und einen Button (z.B. CommandButton1).
  3. Füge den folgenden Code in das Click-Ereignis des Buttons ein:

    Private Sub CommandButton1_Click()
       Dim varResults As New DataObject
       Dim varSql As String
       varSql = Me.TextBox1.Text
       If Not varSql = vbNullString Then
           varResults.SetText varSql
           varResults.PutInClipboard
       End If
       Unload Me
    End Sub
  4. Teste die UserForm:

    • Fülle die TextBox aus und klicke auf den Button, um den Text in die Zwischenablage zu kopieren.

Häufige Fehler und Lösungen

  • Der Inhalt konnte nicht in die Zwischenablage kopiert werden:

    • Stelle sicher, dass die Bibliothek "Microsoft Forms 2.0 Object Library" aktiviert ist. Gehe zu Extras -> Verweise im VBA-Editor und aktiviere diese Bibliothek.
  • Excel fehler in der zwischenablage:

    • Überprüfe, ob dein Zwischenspeicher möglicherweise voll ist. Leere den Zwischenspeicher, bevor du den Text kopierst.
  • Fragezeichen kopieren:

    • Dieser Fehler kann auftreten, wenn der Text nicht richtig gesetzt wird. Überprüfe die Variable, die du kopieren möchtest.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Clipboard API, um den Text zu kopieren. Hier ist ein Beispielcode:

Private Declare PtrSafe Sub OpenClipboard Lib "user32" (ByVal hwnd As LongPtr)
Private Declare PtrSafe Sub CloseClipboard Lib "user32"
Private Declare PtrSafe Sub EmptyClipboard Lib "user32"
Private Declare PtrSafe Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long

Private Sub CommandButton1_Click()
    Dim varSql As String
    varSql = Me.TextBox1.Text
    If Not varSql = vbNullString Then
        OpenClipboard 0
        EmptyClipboard
        SetClipboardData 1, StrPtr(varSql)
        CloseClipboard
    End If
    Unload Me
End Sub

Praktische Beispiele

  1. Text kopieren:

    • Füge in die TextBox einen langen Text ein und drücke den Button. Der gesamte Text sollte in die Zwischenablage kopiert werden.
  2. Leere TextBox:

    • Wenn die TextBox leer ist, wird der Code den Text nicht kopieren, um Fehler zu vermeiden.

Tipps für Profis

  • Zwischenspeicher leeren: Leere den Zwischenspeicher, bevor du neuen Text kopierst, um Konflikte zu vermeiden.

    varResults.SetText ""
    varResults.PutInClipboard
  • Fehlerbehandlung: Implementiere Fehlerbehandlung, um zu vermeiden, dass dein Programm abstürzt, wenn ein Fehler auftritt.


FAQ: Häufige Fragen

1. Wie kann ich überprüfen, ob der Text erfolgreich kopiert wurde? Du kannst den Inhalt der Zwischenablage nach dem Kopieren in einer MessageBox anzeigen.

2. Warum funktioniert der Code nicht in Excel 2016? Stelle sicher, dass alle erforderlichen Verweise aktiv sind und dass du die richtige Syntax für die VBA-Version verwendest.

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