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

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

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

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige