Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1288to1292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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é

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

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é

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige