Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text in Zwischenablage kopieren

Text in Zwischenablage kopieren
16.06.2016 16:19:22
Chris
Hallo zusammen,
in einer Anwendung soll der zweispaltige Inhalt einer Listbox in die Zwischenablage kopiert werden damit er z.B. in eine E-Mail eingefügt werden kann.
Hier der Code:

Private Sub cmdCopy_Click()
Dim copytext As String
Dim i As Integer
Dim myData As New Dataobject
For i = 0 To Me.lblProdukte.ListCount - 1
copytext = copytext & Me.lblProdukte.Column(0, i) & "    " & Me.lblProdukte.Column( _
1, i) & vbCrLf
Next i
myData.Clear
myData.SetText copytext
myData.PutInClipboard
MsgBox copytext
End Sub

Das Problem:
Beim einfügen zeigt er mir nur zwei kleine Vierecke an.
Lese ich den Inhalt der Zwischenablage aus und gebe es in eine MSGBox aus, erscheint: "?"
Lässt sich der Inhalt der Zwischenablage irgendwie formatieren / definieren?
Danke und viele Grüße
Chris

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Zwischenablage kopieren
16.06.2016 16:28:41
Rudi
Hallo,
copytext = copytext & Me.lbxProdukte.List(i, 0) & "    " & Me.lbxProdukte.List(i, 1) & vbCrLf
Gruß
Rudi

AW: Text in Zwischenablage kopieren
16.06.2016 16:32:02
Chris
Hi Rudi,
danke für die schnelle Antwort.
Es werden aber noch immer die zwei ? angezeigt.
Woran kann das noch liegen?
Viele Grüße
Chris

Anzeige
AW: Text in Zwischenablage kopieren
16.06.2016 16:46:08
Rudi
hallo,
bei mir nicht.
Kommt so raus:
a l
b m
c n
d o
e p
muss natürlich bei dir lblProdukte heißen.
Gruß
Rudi

AW: Text in Zwischenablage kopieren
16.06.2016 16:49:25
Chris
Hi Rudi,
kann ich die ListBox an sich noch irgendwie formatieren?
Sie wird befüllt mit Inhalten au zwei Spalten einer Exceltabelle.
Ich habe noch einen zweiten Button der direkt eine E-Mail generiert, hier wird der Text aber sauber übernommen.
Hilf mir Obi-Wan... :)
Viele Grüße
Chris

Anzeige
AW: Text in Zwischenablage kopieren
16.06.2016 18:12:09
Nepumuk
Hallo,
warum schreibst du das nicht in eine Tabelle und kopierst den Tabellenbereich? Da kannst du auch formatieren wie es dir gefällt.
Gruß
Nepumuk

AW: Text in Zwischenablage kopieren
17.06.2016 08:46:52
Chris
Hi Nepumuk,
die Listbox ist für die Anwendung die beste Form.
Das seltsame ist auch, wenn ich die Variable, in welche ich die Werte der Listbox übergebe auslese , in dem ich den Inhalt zum Test einfach in einer MSGBox ausgebe, dann sehe ich hier den Text wie ich ihn brauche.
Der "Fehler" passiert anscheinend bei der Übergabe ins Dataobject, wessen Inhalt dann ja in den Zwischenspeicher übergeben wird.
Daher die Frage, kann ich das in VBA Excel formatieren?
Ich meine etwas von einem ".Setdata"-befehl gelesen zu haben?
Danke und viele Grüße
Chris

Anzeige
AW: Text in Zwischenablage kopieren
17.06.2016 08:55:09
Chris
Ich Depp!!!
Habe den Fehler gefunden...
Die erste Zeile meiner Listbox sind ja die ColumnHeads.
Wenn ich den Counter in der Schleife also nicht bei "0" sondern bei "1" beginnen lasse liest er NUR den Text.
Der richtige code lautet also:

Private Sub cmdCopy_Click()
Dim copytext As String
Dim i As Integer
Dim myData As New Dataobject
For i = 1 To Me.lblProdukte.ListCount - 1 '

Anzeige
AW: Text in Zwischenablage kopieren
17.06.2016 12:21:52
Mullit
"Das ist gut! Du hast den ersten Schritt in eine größere Welt getan."– Obi-Wan Kenobi
Gruß, Mullit

AW: Text in Zwischenablage kopieren
17.06.2016 13:29:17
Chris
Hu Mullit,
jetzt wirds doch seltsam.
Nachdem alles funktioniert hat, geht es jetzt urplötzlich nicht mehr.
Was gibt es denn noch für Ansätze?
In die Variable wird der richtige Inhalt übergeben.
Ins Dataobjekt dann aber wieder nur die zwei "?"...
Viele Grüße
Chris

Anzeige
AW: Text in Zwischenablage kopieren
17.06.2016 16:54:16
Mullit
Hallo,
eigentlich wollt ich mich hier ja auf die Obi Wan -Zitate beschränken und die Yoda Rolle Jedi-Meister Nepumuk überlassen, verdammt, aber gut es ist noch kein Jedi vom Himmel gefallen...
Ich seh nirgendwo, daß Du das Clipboard auch ausliest, das geht bei mir so, mit CommandButton1 und mit Bsp.-Daten in der Msgbox-Ausgabe unten...
Option Explicit

Private myData As DataObject

Private Sub CommandButton1_Click()
Call myData.GetFromClipboard
Call MsgBox(myData.GetText)
End Sub

Private Sub UserForm_Activate()
Me.lblProdukte.ColumnCount = 2
Me.lblProdukte.List() = Tabelle1.Cells(1, 1).Resize(10, 2).Value
End Sub

Private Sub cmdCopy_Click()
    Dim copytext As String
    Dim i As Integer
    Set myData = New DataObject
    
        For i = 1 To Me.lblProdukte.ListCount - 1 '<--------"1" anstatt "0" to Me.... 
            copytext = copytext & Me.lblProdukte.List(i, 0) & "    " & Me.lblProdukte.List(i, 1) _
 & vbCrLf
        Next i

    Call myData.Clear
    Call myData.SetText(copytext)
    Call myData.PutInClipboard
              
End Sub

Private Sub UserForm_Terminate()
 Call Tabelle1.Cells(1, 1).Copy
 Application.CutCopyMode = False
 Set myData = Nothing
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14
---------------------------
Microsoft Excel
---------------------------
dgf 65

gfhjhg gzrf

cvcvb rtfg

vbnnvb ztu76

jhg 8787

ghg 566

ghfhfg    5rtz

ghjhk rtfg

jk fthfgh


---------------------------
OK
---------------------------



Gruß, Mullit

Anzeige
AW: Text in Zwischenablage kopieren
20.06.2016 09:07:51
Chris
Guten Morgen Mullit,
er liest schon alles passend aus der Listbox aus... Das Problem ist dass es sporadisch nicht funktioniert.
Bei einem Test vor ein paar Minuten hat alles ohne Probleme funktioniert.
Nach einem Neustart der Anwendung erscheinen beim Einfügen wieder nur die "?".
Kann ich das myData Objekt irgendwie formatieren?
Oder sollte ich den Zwischenspeicher vor dem Einfügen des Texts resetten / leeren?
Viele Grüße
Chris

Anzeige
AW: Text in Zwischenablage kopieren
20.06.2016 09:24:22
Mullit
Hallo Chris,
hmm ich mein mich zu erinnern, daß es Probleme mit dem DataObjekt geben kann, vielleicht geht die Alternative von Nepumuk besser bei Dir.
Andernfalls wirst Du ne Bsp.-mappe mit dem Problem hochladen müssen....
Gruß, Mullit

Anzeige
AW: Text in Zwischenablage kopieren
16.06.2016 20:27:22
Mullit

Hilf mir Obi-Wan... :)

...Du mußt Dich mit der Macht (VBA) vertraut machen, Luke...
Gruß, Mullit
;

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

Text in die Zwischenablage kopieren mit VBA


Schritt-für-Schritt-Anleitung

Um Text aus einer ListBox in die Zwischenablage zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code nimmt an, dass du eine ListBox mit dem Namen lblProdukte verwendest und dass sie zwei Spalten hat.

Private Sub cmdCopy_Click()
    Dim copytext As String
    Dim i As Integer
    Dim myData As New DataObject
    For i = 1 To Me.lblProdukte.ListCount - 1 ' Beginne bei 1, um die Header zu überspringen
        copytext = copytext & Me.lblProdukte.List(i, 0) & "    " & Me.lblProdukte.List(i, 1) & vbCrLf
    Next i
    myData.Clear
    myData.SetText copytext
    myData.PutInClipboard
    MsgBox copytext
End Sub

Stelle sicher, dass du die Referenz auf das Microsoft Forms 2.0 Object Library in deinen VBA-Projektverweisen gesetzt hast, um das DataObject nutzen zu können.


Häufige Fehler und Lösungen

  1. Problem: "?" wird angezeigt, wenn der Text eingefügt wird.

    • Lösung: Überprüfe, ob du die richtige Zeile in der Schleife verwendest. Beginne bei 1, um die Kopfzeile der ListBox zu überspringen.
  2. Problem: Sporadische Fehler beim Kopieren.

    • Lösung: Es kann hilfreich sein, die Zwischenablage vor dem Kopieren zu leeren. Füge myData.Clear vor myData.SetText hinzu.
  3. Problem: Text wird nicht korrekt formatiert.

    • Lösung: Achte darauf, dass du die richtige Trennung (z.B. Tabulatoren oder Leerzeichen) zwischen den Spalten verwendest.

Alternative Methoden

Wenn du Schwierigkeiten mit dem DataObject hast, kannst du auch den direkten Weg über Excel nutzen:

Tabelle1.Range("A1:B10").Copy ' Kopiert den Bereich A1:B10

Dieser Ansatz ist besonders nützlich, wenn du bereits Daten in einem Excel-Blatt hast und diese direkt in die Zwischenablage kopieren möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du die ListBox mit Daten aus einer Excel-Tabelle füllen und dann in die Zwischenablage kopieren kannst:

Private Sub UserForm_Activate()
    Me.lblProdukte.ColumnCount = 2
    Me.lblProdukte.List = Tabelle1.Range("A1:B10").Value ' Füllt die ListBox mit Daten
End Sub

Mit diesem Setup kannst du den Text der ListBox einfach in die Zwischenablage kopieren und in andere Anwendungen einfügen.


Tipps für Profis

  • Verwende vbTab anstelle von " " für Tabulatoren zwischen den Spalten, um eine bessere Formatierung zu erzielen.
  • Wenn du mit großen Datenmengen arbeitest, teste die Performance und reagiere auf mögliche Verzögerungen beim Kopieren in die Zwischenablage.
  • Nutze die Möglichkeit, dein Makro zu debuggen, um sicherzustellen, dass die korrekten Daten in die Zwischenablage geschrieben werden.

FAQ: Häufige Fragen

1. Wie kann ich Text aus der Zwischenablage auslesen? Um den Inhalt der Zwischenablage auszulesen, kannst du den folgenden Code verwenden:

Dim myData As New DataObject
myData.GetFromClipboard
MsgBox myData.GetText

2. Kann ich die Zwischenablage nach dem Einfügen leeren? Ja, du kannst die Zwischenablage nach dem Einfügen leeren, indem du den Befehl Application.CutCopyMode = False 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