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

Forumthread: VBA - Zugriff auf Zwischenablage über API

VBA - Zugriff auf Zwischenablage über API
05.12.2012 20:04:37
Andre
Hallo miteinander,
wenn man aus einem Internet-Browser per Strg-c eine Grafik kopiert, an der ein Hyperlink hängt und diese Grafik dann mit Strg-v in eine Excel Tabelle einfügt, hängt der Hyperlink wieder mit dran.
So weit so gut.
Ich habe ein Makro geschrieben, welches mir per API die Grafik aus der Zwischenablage als Bitmap auf die Festplatte schreibt, ohne dass ich sie vorher ins Excel einfügen muss. Das funktioniert sehr gut.
Nun möchte ich aber noch an den Link heran, der ja ebenfalls mit in der Zwischenablage sein muss. Hier komme ich nicht weiter.
Kann mir jemand helfen?
Vielen Dank im Voraus,
André

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zugriff auf Zwischenablage über API
05.12.2012 22:40:26
Nepumuk
Hallo,
es ist zwar kein Problem an den HTML-Code der hinter dem Bild steht zu kommen, aber darin muss die Hyperlinkadresse nicht unbedingt enthalten sein. Denn der Hyperlink eines Bildes ist eine Metaeigenschaft des Bildes, an die kommst du über die Zwischenablage nicht ran. Das einfachste, das Bild in eine Tabelle einfügen und die Hyperlinkadresse auslesen.
Gruß
Nepumuk

Anzeige
AW: VBA - Zugriff auf Zwischenablage über API
06.12.2012 07:26:46
Andre
Hallo Nepumuk,
vielen Dank für die Antwort. Kannst Du mir noch einen Hinweis geben, wie ich an den HTML-Code komme, der hinter dem Bild steht?
Warum kommt man an die Metaeigenschaften des Bildes nicht ran? Wenn ich das Bild in ein Tabellenblatt einfüge, ist der Hyperlink doch auch da.
Viele Grüße
André

Anzeige
AW: VBA - Zugriff auf Zwischenablage über API
06.12.2012 19:17:24
Nepumuk
Hallo,
so bekommst du den Code der hinter dem Bild steckt:
Option Explicit

Private Declare Function GlobalLock Lib "kernel32.dll" ( _
    ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" ( _
    ByVal hMem As Long) As Long
Private Declare Function lstrlenA Lib "kernel32.dll" ( _
    ByVal lpString As Long) As Long
Private Declare Function lstrcpyA Lib "kernel32.dll" ( _
    ByVal lpString1 As Any, _
    ByVal lpString2 As Any) As Long
Private Declare Function RegisterClipboardFormatA Lib "user32.dll" ( _
    ByVal lpString As String) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" ( _
    ByVal wFormat As Long) As Long
Private Declare Function OpenClipboard Lib "user32.dll" ( _
    ByVal hWnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" ( _
    ByVal wFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long

Public Sub Beispiel()
    Dim strReturn As String
    strReturn = HTMLFromClipboard
    If strReturn <> "" Then
        Debug.Print strReturn
    Else
        MsgBox "Kein HTML im Clipboard"
    End If
End Sub

Private Function HTMLFromClipboard() As String
    Dim lngFormatHTML As Long
    Dim lngHandle As Long, lngPointer As Long
    Dim strText As String
    lngFormatHTML = RegisterClipboardFormatA("HTML Format")
    If IsClipboardFormatAvailable(lngFormatHTML) Then
        Call OpenClipboard(0&)
        lngHandle = GetClipboardData(lngFormatHTML)
        lngPointer = GlobalLock(lngHandle)
        strText = Space$(lstrlenA(ByVal lngPointer))
        Call lstrcpyA(strText, ByVal lngPointer)
        Call GlobalUnlock(lngPointer)
        Call CloseClipboard
        HTMLFromClipboard = strText
    End If
End Function

Warum du an die Metaeigenschaften nicht ran kommst, ganz einfach weil es, auch per API, nicht möglich ist die Bilddaten aus der Zwischenablage wie einen Text zu lesen. So etwas müsste man in C++ schreiben, in VBA hast du keine Chance.
Gruß
Nepumuk

Anzeige
AW: VBA - Zugriff auf Zwischenablage über API
07.12.2012 08:58:52
Andre
Hallo Nepumuk,
danke. Das hilft mir weiter.
Hätte gar nicht gedacht, dass da so viel an Informationen drin steht.
Viele Grüße
André
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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