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

link - copy to clipboard

Forumthread: link - copy to clipboard

link - copy to clipboard
Ralf_P
Moin zusammen,
ich habe eine Tabelle mit Hyperlinks zu diversen Grafikdateien auf einem Netzlaufwerk.
Über eine UF kann man sich Vorschaubilder der einzelnen Grafiken ansehen.
Ich möchte gerne einen Button "in Zwischenablage kopieren" anlegen, der den aktuellen Zellwert z. B.
"Z:\Bilder\Grafik_xyz.jpg" verwendet, um diese Grafik in die Zwischenablage zu kopieren.
Nach langem googeln und testen habe ich zumindest den Link als Text in die Zwischenablage bekommen, aber nicht das Bild.
Auch folgender Ansatz geht nicht:
Private Sub CommandButton5_Click()
Dim Zwischenablage As DataObject
Set Zwischenablage = New DataObject
obj = Cells(Nummer, 2).Value
'Zwischenablage.SetImage (obj)
Zwischenablage.PutInClipboard
End Sub
Weiß einer wie es richtig ist?
MfG
Ralf
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: link - copy to clipboard
07.11.2011 11:24:09
Nepumuk
Hallo,
einfach so:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Declare Function CopyImage Lib "user32.dll" ( _
    ByVal handle As Long, _
    ByVal un1 As Long, _
    ByVal n1 As Long, _
    ByVal n2 As Long, _
    ByVal un2 As Long) As Long
Private Declare Function SetClipboardData Lib "user32.dll" ( _
    ByVal wFormat As Long, _
    ByVal hMem As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function OpenClipboard Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long

Private Const IMAGE_BITMAP = 0&
Private Const LR_COPYRETURNORG = &H4
Private Const CF_BITMAP = 2&

Private Sub CommandButton1_Click()
    Dim lngTempPicture As Long
    Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\15668.jpg")
    lngTempPicture = CopyImage(Image1.Picture, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
    If lngTempPicture <> 0 Then
        Call OpenClipboard(Application.hwnd)
        Call EmptyClipboard
        Call SetClipboardData(CF_BITMAP, lngTempPicture)
        Call CloseClipboard
    Else
        MsgBox "Fehler beim Kopieren"
    End If
End Sub

Ohne das Bild zu öffnen und in ein Image-Control zu laden geht es nicht. Das Image muss aber nicht sichtbar sein.
Gruß
Nepumuk
Anzeige
Danke, so gehts o.w.t.
07.11.2011 11:59:41
Ralf_P
;
Anzeige

Infobox / Tutorial

Hyperlinks und Bilder mit Excel VBA in die Zwischenablage kopieren


Schritt-für-Schritt-Anleitung

Um einen Button in Excel zu erstellen, der den aktuellen Zellwert in die Zwischenablage kopiert, kannst du folgenden VBA-Code verwenden. Dieser Code kopiert den Pfad zu einer Grafikdatei in die Zwischenablage:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deineDatei)" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Const CF_TEXT = 1
    
    Sub CopyLinkToClipboard()
       Dim MyData As DataObject
       Set MyData = New DataObject
       Dim cellValue As String
       cellValue = ActiveCell.Value ' Aktuellen Zellwert abrufen
       MyData.SetText cellValue
       MyData.PutInClipboard
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Füge einen Button ein (Entwicklertools > Einfügen > Schaltfläche).

  6. Weisen den Button der obigen CopyLinkToClipboard-Sub zu.

Nun kannst du mit einem Klick auf den Button den Zellinhalt in die Zwischenablage kopieren.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung" beim Kompilieren.

    • Lösung: Stelle sicher, dass du die Microsoft Forms 2.0 Object Library in den Verweisen aktiviert hast. Gehe zu Extras > Verweise und aktiviere das Häkchen.
  • Fehler: Der Button kopiert nicht den richtigen Wert.

    • Lösung: Überprüfe, ob die aktive Zelle den gewünschten Zellwert enthält. Stelle sicher, dass der Button korrekt mit dem Makro verbunden ist.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, kannst du auch die integrierten Funktionen von Excel nutzen, um Links in die Zwischenablage zu kopieren:

  1. Wähle die Zelle mit dem Hyperlink aus.
  2. Drücke CTRL + C, um den Link zu kopieren.
  3. Der Link befindet sich nun in der Zwischenablage und kann überall eingefügt werden.

Praktische Beispiele

Hier sind einige Anwendungsfälle für das Kopieren von Links in die Zwischenablage:

  • Kopieren von Bildpfaden: Wenn du eine Liste von Bildpfaden in Excel hast, kannst du sie mit einem Button schnell in die Zwischenablage kopieren und in ein HTML-Dokument einfügen.

  • Schnelles Teilen von Hyperlinks: Erstelle eine Sammlung von Links, die du häufig benötigst, und füge sie mit einem einzigen Klick in die Zwischenablage ein, um sie beispielsweise in E-Mails zu verwenden.


Tipps für Profis

  • Verwende SetClipboardData vba für Bilder: Wenn du Bilder in die Zwischenablage kopieren möchtest, kannst du den SetClipboardData-Befehl in Kombination mit einem Image-Control verwenden, um das Bild direkt zu kopieren.

  • Automatisiere den Prozess: Du kannst VBA-Makros so einstellen, dass sie beim Öffnen der Datei automatisch ausgeführt werden, um häufig genutzte Links oder Bilder sofort in die Zwischenablage zu kopieren.


FAQ: Häufige Fragen

1. Wie kopiere ich einen HTML-Link in die Zwischenablage?
Du kannst den HTML-Link wie jeden anderen Text in Excel kopieren, indem du den Zellinhalt auswählst und CTRL + C drückst.

2. Funktioniert das Kopieren in die Zwischenablage in allen Excel-Versionen?
Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionieren. Stelle jedoch sicher, dass die richtigen Bibliotheken referenziert sind, wenn du VBA 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