Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
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
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

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
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

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

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. :(

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige