2 Stimmen

Wie kopiert man den Inhalt einer Zelle in die Zwischenablage?

Ich versuche, den Zellinhalt in die Zwischenablage zu kopieren.

Ich habe genau das in der Excel 2007-Hilfedatei angegebene Beispiel gelesen und ausprobiert. Aus irgendeinem Grund ist das DataObject-Objekt jedoch nicht gültig. Also das Beispiel:

Dim MyData As DataObject

Private Sub CommandButton1_Click()
    Set MyData = New DataObject

    MyData.SetText TextBox1.Text
    MyData.PutInClipboard

    TextBox2.Paste
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Text = "Move this data to a " _
        & "DataObject, to the Clipboard, then to " _
        & "TextBox2!"
End Sub

Funktioniert in meinem Fall nicht. Ich habe jetzt eine ganze Weile gesucht und ich kann keine Antwort darauf finden, warum das DataObject-Objekt nicht verfügbar ist.

Hier ist mein Code:

Dim MyData As DataObject

Private Sub Worksheet_Change(ByVal Target As Range)
    If ActiveCell.Column = 3 Then
        Set MyData = New DataObject
        MyData.SetText ActiveCell.Offset(-1, -1).Text
        MyData.PutInclipboard
    End If    
End Sub

Fehler beim Kompilieren ist: "Benutzerdefinierter Typ nicht definiert" und hebt die Zeile "MyData As DataObject" hervor.

Gibt es eine andere Methode als das einfache Kopieren des Textes in einer Zelle in die Zwischenablage?

8voto

curtisk Punkte 19336

Okay, ein paar Dinge:

Zuerst müssen Sie einen Verweis auf die "Microsoft Forms 2.0 Object Library" hinzufügen. Wenn Sie keine Lust haben, sich durchzusuchen, fügen Sie einfach ein Benutzerformular zum Projekt hinzu und löschen es dann sofort, der Verweis bleibt erhalten. Sie benötigen diesen Verweis, um DataObject zu verwenden

Ich werde einen Code anhängen, den ich zum Laufen gebracht habe. Ich habe die Offsets geändert, aber machen Sie, was immer Sie brauchen...

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Set MyData = New DataObject
    If ActiveCell.Column = 3 Then
        MyData.SetText ActiveCell.Offset(-1, 0).Text
        MyData.PutInClipboard
    End If
End Sub

0 Stimmen

Ja, das war das Problem. Ich benutze Win7 Beta und anscheinend ist die FM20.dll nicht installiert. Ich wechselte zu einem XP-Rechner, fügte die Referenz hinzu und jetzt funktioniert es wie erwartet. danke curtisk

0 Stimmen

Dies funktioniert bei mir unter Excel 2007 / Windows 7 nicht. Beim Hinzufügen eines Benutzerformulars wird die Bibliothek nicht hinzugefügt, sie ist nicht in den Referenzen aufgeführt, und die FM20.DLL scheint nicht auf meinem System zu sein, sodass ich sie nicht manuell hinzufügen kann.

0 Stimmen

@Gruff Werfen Sie einen Blick in c: \windows\system32 für FM20.dll, es ist auf meinem 64bit Win7 mit Office 2007 installiert (SP3)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X