Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Hyperlink in Zwischenablage

VBA: Hyperlink in Zwischenablage
05.06.2022 18:17:47
Beverly
Hi Helfer,
ich möchte ein Hyperlink (Linkadresse und Anzuzeigender Text sind jeweils als String bekannt) per VBA als Link in die Zwischenablage übergeben, sodass der Link anschließend mittels Strg+V irgendwo (Excelzelle, Word, Outlook) eingefügt werden kann und am Zielort dann der Anzuzeigende Text als ausführbarer Link steht? Ist das möglich und falls Ja - wie?
Bis später
Karin

Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 18:34:55
{Boris}
Hi Karin,
probier mal (ungetestet):

Dim objDO As New DataObject
objDO.SetText "Dein Link"
objDO.PutInClipboard
Für den notwendigen Verweis muss ein (leeres) Userform in der Datei enthalten sein.
VG, Boris
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 18:54:50
Beverly
Hi Boris,
danke für deine Antwort, das überträgt zwar den Link in die Zwischenablage, aber eben nur als Text und ohne dazu gehörigen Anzuzeigenden Text. Der Inhalt der Zwischenablage wird dann auch nur als Text mittels Strg+V eingefügt. Mittels objDO.SetText wird m.E. auch festgelegt, dass es eben nur Text ist.
Bis später
Karin

Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
05.06.2022 19:29:16
Beverly
Sorry, vergessen auf Offen zu setzen.
Bis später
Karin

AW: VBA: Hyperlink in Zwischenablage - offen
05.06.2022 20:15:26
Firmus
Hi Karin,
eventuell hilft dir das weiter: https://docs.microsoft.com/de-de/dotnet/visual-basic/developing-apps/programming/computer-resources/storing-data-to-and-reading-from-the-clipboard
Das Clipboard unterscheidet nach Datentypen. Hilfreich für das Kopieren eines Links könnte der Typ 'benutzerdefiniert' sein.
Ganze Liste: https://docs.microsoft.com/de-de/office/vba/api/excel.xlclipboardformat
Anstelle einer leeren Userform kannst du auch einen Verweis zu Microsoft Forms 2.0 setzen. (Durchsuchen C:\Windows\SysWoW64\FM20.DLL)
Leider sind meine praktischen Erfahrungen mit nicht-Text gegen Null.
Gruß,
Firmus
Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 00:24:03
Beverly
Hi Firmus,
danke für die Links - leider ist mir nicht klar, wie ich das im konreten Fall umsetzen könnte.
Bis später
Karin

AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 09:50:27
Beverly
Hi Firmus,
wenn ich das richtig sehe, müsste einer dieser 3 Typen zum Einsatz kommen:
xlClipboardFormatLink
xlClipboardFormatLinkSource
xlClipboardFormatLinkSourceDesc
Hast du (oder jemand anderes) eine Idee, wie man der Zwischenablage den Typ zuweist?
Mit den VB-Beispielen kann ich leider nichts anfangen, da ich nicht weiß, wie man sie mit VBA umsetzen kann.
Bis später
Karin

Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 11:17:50
ralf_b
laut den Links kann man mittels SetText() auch ein Format mitgeben und mittels GetFormat() prüfen ob dies in der Zwischenablage vorhanden ist.
Die Apifunktionen, die im folgenden Link erwähnt werden, lassen auch ein Format als Parameter zu.
https://docs.microsoft.com/de-de/office/vba/access/concepts/windows-api/retrieve-information-from-the-clipboard
Declare Function GetClipboardData Lib "User32" (ByVal wFormat As Long) As Long
Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 14:37:33
Beverly
Das ist m.E. der falsche Link, da es dort darum geht, etwas aus der Zwischenablage zu extrahieren - dies wäre dann wohl sicher der richtige: https://docs.microsoft.com/de-de/office/vba/access/concepts/windows-api/send-information-to-the-clipboard
Danke, aber das nützt mir leider nicht viel, da ich mich mit API nicht auskenne. Deshalb konnte ich dort auch nicht erkennen, auf welche Weise man die Linkadresse und den Anzeigetext übergibt.
Bis später
Karin

Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 15:14:58
Firmus
Hi Karin,
habe das Thema noch etwas untersucht.
1. Sobald Dataobject genutzt wird, kann nur Text übertragen werden.
2. folgendes hatte ich bei Excel Online entdeckt, getestet und funktioniert [alles nur Text :-((]

Public Sub TesteEs()
SchreibeTextInDieZwischenablage
MsgBox HoleTextVonZwischenablage
RausMitZwischenAblage
MsgBox HoleTextVonZwischenablage
End Sub
Public Sub SchreibeTextInDieZwischenablage()
Dim oData As New DataObject
Dim sText As String
sText = "Hallo Leute" & vbCrLf & "Neues von Online Excel"
With oData
.SetText sText
.PutInClipboard
End With
End Sub
Public Function HoleTextVonZwischenablage() As String
Dim oData As New DataObject
On Error Resume Next ' Brutal um falsche Formate abzuwürgen, gibt dann einen Leerstring
oData.GetFromClipboard
HoleTextVonZwischenablage = oData.GetText
End Function
Public Sub RausMitZwischenAblage()
Dim oData As New DataObject
oData.SetText ""
oData.PutInClipboard
End Sub
3. Welche Datentyp steht im Clipboard?
Mit diesem Code sind in VBA die Datentypen ermittelbar. (Damit näher an der VBA-Systematik - aber noch nicht auf dem Lösungsweg.)

Sub testit()
aFmts = Application.ClipboardFormats
For Each fmt In aFmts
If fmt = xlClipboardFormatBitmap Then
MsgBox "Clipboard contains a bitmap"
End If
End Sub
Next
4. Bypass via word
Einen Beitrag habe ich gesehen (VBA für Word): der schreibt einen Link in ein Dokument und holt ihn dort per variable wieder ab.
Sorry,
habe leider zu wenig VBA-Kenntnisse, um hier erfolgreich zu sein. Ich vermute XLS-VBA kann das nicht.
Bin damit leider raus.
Gruß,
Firmus
Anzeige
AW: VBA: Hyperlink in Zwischenablage - offen
06.06.2022 16:00:29
Beverly
Hi Firmus,
vielen Dank für deine Bemühungen - nicht immer führt alles zum gewünschten Erfolg.
Das ganze funktioniert sehr unkompliziert, wenn man den Link einfach - sicher ähnlich wie in deinem erwähnten Code für Word - in eine Zelle schreibt und diese dann kopiert. Leider ist das nicht gewünscht.
Man könnte es sicher mittels API-Funktionen lösen, da man dort den Datentyp mit übergeben kann. Ich weiß allerdings auch gar nicht, ob man damit sowohl die Linkadresse als auch den Anzuzeigenden Text übergeben kann, oder ob das dann nur die Linkadresse ist. Aber mit API kenne ich mich halt überhaupt nicht aus, sodass ich nicht einmal das definitiv sagen kann.
Bis später
Karin

Anzeige
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 20:04:13
onur

Private Sub CommandButton1_Click()
Dim Adresse, LinkText
Adresse = "https://www.herber.de/"
LinkText = "Test"
ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), Address:=Adresse, TextToDisplay:=LinkText
Cells(1, 1).Copy
Range("A1").ClearContents
End Sub

Anzeige
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 20:14:07
Beverly
Das ist mir bekannt - der Link soll jedoch nicht aus einer Zelle genommen werden sondern als bekannter String direkt in die Zwischenablage übergeben werden.
Bis später
Karin

AW: VBA: Hyperlink in Zwischenablage
05.06.2022 20:31:04
onur
"Das ist mir bekannt - der Link soll jedoch nicht aus einer Zelle genommen werden sondern als bekannter String direkt in die Zwischenablage übergeben werden" - Sorry, das muss ich irgendwie überlesen haben.....
Dann halt so:

Dim Adresse, LinkText, h
Adresse = "https://www.herber.de/"
LinkText = "Test"
Set h = ActiveSheet.Hyperlinks.Add(Anchor:=Range("A1"), Address:=Adresse, TextToDisplay:=LinkText)
h.Range.Copy

Anzeige
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 21:33:32
Beverly
ich möchte ein Hyperlink (Linkadresse und Anzuzeigender Text sind jeweils als String bekannt) per VBA als Link in die Zwischenablage übergeben
Da steht nichts, dass das über eine Zelle geschehen soll...
Bis später
Karin

Anzeige
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 21:35:12
onur
Und was gefällt dir jetzt am ZWEITEN Code nicht?
AW: VBA: Hyperlink in Zwischenablage
05.06.2022 23:59:33
Beverly
Du weißt schon dass Range("A1") eine Zelle ist...?
AW: VBA: Hyperlink in Zwischenablage
06.06.2022 00:25:26
onur
Sorry, hast Recht. :(
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Hyperlink in die Zwischenablage mit VBA kopieren


Schritt-für-Schritt-Anleitung

Um einen Hyperlink (Linkadresse und anzuzeigender Text) direkt in die Zwischenablage zu kopieren, kannst du den folgenden VBA-Code verwenden:

Sub HyperlinkInZwischenablageKopieren()
    Dim objData As New MSForms.DataObject
    Dim Adresse As String
    Dim LinkText As String

    Adresse = "https://www.deinlink.de/"
    LinkText = "Dein anzuzeigender Text"

    ' Erstellen des Hyperlinks
    ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), Address:=Adresse, TextToDisplay:=LinkText

    ' Link in die Zwischenablage kopieren
    Range("A1").Copy
    ' Optional: Zelle leeren
    Range("A1").ClearContents
End Sub

Dieser Code erstellt einen Hyperlink in Zelle A1 und kopiert diesen in die Zwischenablage. Der Link kann dann überall eingefügt werden, wo du ihn benötigst.


Häufige Fehler und Lösungen

  1. Hyperlink anzuzeigender Text lässt sich nicht ändern

    • Stelle sicher, dass du den TextToDisplay Parameter beim Erstellen des Hyperlinks richtig gesetzt hast.
  2. Link wird nur als Text eingefügt

    • Wenn der Link in der Zwischenablage nur als Text eingefügt wird, kann es sein, dass du den Typ der Daten nicht korrekt festgelegt hast. Überprüfe, ob du den richtigen Datentyp verwendest.

Alternative Methoden

Wenn du den Hyperlink nicht über eine Zelle erstellen möchtest, kannst du auch eine benutzerdefinierte Methode nutzen. Hier ein Beispiel, wie du den Link direkt in die Zwischenablage kopieren kannst, ohne ihn in eine Excel-Zelle zu schreiben:

Sub LinkInZwischenablageDirekt()
    Dim objData As New MSForms.DataObject
    Dim Adresse As String
    Dim LinkText As String

    Adresse = "https://www.deinlink.de/"
    LinkText = "Dein anzuzeigender Text"

    ' Link zusammenstellen
    objData.SetText LinkText & vbCrLf & Adresse
    objData.PutInClipboard
End Sub

In diesem Beispiel wird der Linktext und die Adresse in die Zwischenablage kopiert.


Praktische Beispiele

Beispiel 1: Hyperlink aus der Zwischenablage einfügen

Um den kopierten Hyperlink aus der Zwischenablage in eine Zelle einzufügen, kannst du einfach Strg + V verwenden.

Sub LinkAusZwischenablageEinfügen()
    ' Stelle sicher, dass die Zelle ausgewählt ist, in die der Link eingefügt werden soll.
    ActiveSheet.Paste
End Sub

Beispiel 2: Link in eine Word-Datei einfügen

Wenn du den Link in eine Word-Datei einfügen möchtest, kannst du die Word-Objektbibliothek in deinem VBA-Projekt aktivieren und den Link einfügen:

Sub LinkInWordEinfügen()
    Dim wdApp As Object
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True

    wdApp.Documents.Add
    wdApp.Selection.Paste
End Sub

Tipps für Profis

  • Verwendung von API: Wenn du mehr Kontrolle über die Daten in der Zwischenablage benötigst, kannst du API-Funktionen in VBA verwenden, um spezifische Formate zu setzen.
  • Verweise setzen: Stelle sicher, dass du den Microsoft Forms 2.0 Verweis in deinem VBA-Projekt gesetzt hast, um DataObject nutzen zu können.
  • Fehlerbehandlung: Implementiere Error-Handling in deinem Code, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich den Hyperlink in einer Zelle erstellen und dann in die Zwischenablage kopieren? Ja, das ist möglich. Du kannst den Link in eine Zelle schreiben und dann die Zelle kopieren.

2. Wie kann ich den kopierten Link formatieren? Um den kopierten Link zu formatieren, musst du sicherstellen, dass du den richtigen Datentyp in der Zwischenablage setzt. Es gibt spezifische Typen wie xlClipboardFormatLink, die dir helfen können.

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