259 Aufrufe
Gefragt in Tabellenkalkulation von heiko1985 Mitglied (127 Punkte)

Hallo zusammen

Also:

Ich habe eine Excel-Datei mit einer UserForm. Darin erzeuge ich einen Link und den passenden Anzeigetext. Zum Beispiel so (vereinfacht):

Labe1 = Link: "C:\Ordner\MeineDatei.txt"

Label2 = Anzeigetext: "MeineDatei.txt"

Das Entscheidende ist, dass Link und Anzeigetext unterschiedlich sind, und dass der Anzeigetext nicht den vollständigen Link enthält.

Über Makros kopiere ich Anzeigetext und Link nacheinander in die Zwischenablage und baue den Hyperlink an seinem Ziel (zum Beispiel in Outlook) händisch zusammen.

Das ist mir aber zu umständlich. Ich würde in Excel gerne alles mit Makros vorbereiten, um dann in Outlook nur noch strg+v drücken zu müssen.

Habt ihr dafür vielleicht eine Lösung?

---

Das ist mein aktueller Work-around:

Über Makros den Hyperlink zuerst in einer Excel-Zelle erstellen und dann die ganze Zelle in die Zwischenablge. Anschließend in Outlook mit Rechtsklick -> "Formatierung zusammenfügen" einfügen.

Probleme:

  • Bei "Formatierung zusammenfügen" wird manchmal ein Tabellenrahmen erstellt.
  • Hinter dem Anzeigetext wird immer ein Absatz eingefügt, den ich händisch löschen muss.

Also nicht gerade das Gelbe vom Ei …

Danke und Gruß

Heiko1985

7 Antworten

+1 Punkt
Beantwortet von m-o Profi (21.8k Punkte)

Hallo Heiko,

hier mal ein Beispiel wie du einen Hyperlink in Outlook einfügen kannst:

Sub EmailHyperlink()
Dim xOtl As Object
Dim xOtlMail As Object
Dim xStrBody As String
    
'Achtung!
'Damit das Makro funktioniert, ist ein Verweis auf die Microsoft Forms 2.0. Object Libary zu setzen:
'- im Visual Basic Editor über
'- Menü Extras / Verweise
'- Aus Liste auswählen oder mit "Durchsuchen" finden z.B. unter: C:\WINDOWS\SYSTEM32\FM20.DLL
'- OK drücken
'- VB-Editor schließen
'- Datei speichern
    
'Text für Outlook-Nachricht
'<br> steht für Zeilenumbuch in HTML-Nachricht
xStrBody = "Hallo<br><br>Bitte hier <a href=""http://www.supportnet.de"">klicken</a> um zur Seite zu gelangen<br>Vielen Dank."

Set xOtl = CreateObject("Outlook.Application")
Set xOtlMail = xOtl.CreateItem(olMailItem)
With xOtlMail
        .To = "max.mustermann@mustermann.de"
        .CC = "Email Address "
        .BCC = " Email Address "
        .Subject = "Beispiel"
        .HTMLBody = xStrBody
        .Display  'Nachricht anzeigen
End With
Set xOtl = Nothing
Set xOtlMail = Nothing
End Sub

Das Makro kannst du dann auf deine Verhältnisse anpassen.

Gruß

M.O.

0 Punkte
Beantwortet von heiko1985 Mitglied (127 Punkte)
Hallo M.O.

Vielen Dank für deine Antwort. Das kann ich an anderer Stelle sehr gut gebrauchen.

Es ist aber leider nicht ganz das, was ich gemeint hatte.

Ich möchte den Text samt Hyperlink an einer beliebigen Stelle in meiner E-Mail oder meinem Word-Dokument einfügen können. Also so wie einen ganz normalen Text aus der Zwischenablage.

Gruß
Heiko1985
+1 Punkt
Beantwortet von m-o Profi (21.8k Punkte)
Hallo Heiko1985,

du wirst wohl damit leben müssen, dass mindestens immer ein Umbruch eingefügt wird, wenn du den kopierten Link mit STRG + V einfügst, da hierdurch der Link "aktiviert" wird. Du kannst zwar z.B. einen Link per VBA in die Zwischenablage schreiben. Fügst du diesen dann aber mit STRG + V ein, dann wird nur ein Text eingefügt, also keinen Link auf den du klicken kannst. Erst wenn du RETURN drückst, wird dann der eingefügte Text zum Link.

Ich habe jedenfalls keine andere Möglichkeit gefunden.

Gruß

M.O.
+1 Punkt
Beantwortet von beverly_ Experte (2.4k Punkte)
Hi Heiko,

vielleicht ein Workaround: benutze ein zusätzliches (ausgeblendetes) Label oder Textfeld, in dem du den Link aus Label1 und Label2 zusammensetzt, sodass du den Link in der Zwischenablage nicht erst zusammensetzen musst und somit kein Zeilenumbruch entstehen sollte.

Bis später, Karin
0 Punkte
Beantwortet von heiko1985 Mitglied (127 Punkte)
@ M.O.

Ich verstehe. Danke trotzdem für deine Antwort!

@Karin

Das klingt gut! Aber wie mache ich das?

Ich kann nur einen normalen Text in ein Label/Textfeld schreiben.
+1 Punkt
Beantwortet von beverly_ Experte (2.4k Punkte)

Hi Heiko,

leider hat das nicht so funktioniert wie ich mir das vorgestellt habe.

Ich habe ein wenig recherchiert, weshalb ich erst jetzt antworten kann: zumindest scheint mit normalen Bord-Mitteln der einzig gängige Weg zu sein, den Link in eine Zelle zu schreiben und diese dann einfach mittels Copy in die Zwischenablage zu kopieren.

Was ich jedoch gefunden habe ist, das man mittels API-Funktionen nicht nur Text sondern auch ein Format, also im konkreten Fall als Link, an die Zwischenablage übergeben kann. Ob es dabei möglich ist, nicht nur die Linkadresse sondern auch den Anzeigetext zu übergeben weiß ich nicht, denn mit API-Funktionen kenne ich mich absolut nicht aus. Hier mal der Link zu der Seite, wo ich dazu etwas gefunden habe - vielleicht hilft es dir ja weiter https://docs.microsoft.com/de-de/office/vba/access/concepts/windows-api/send-information-to-the-clipboard

Bis später, Karin

0 Punkte
Beantwortet von heiko1985 Mitglied (127 Punkte)
Hallo Karin,

vielen Danke für deine Hilfe!

Mit API-Funktionen kenne ich mich leider auch nicht aus. Evtl. versuche ich mal, mich da einzulesen.

FALLS ich da was hinbekomme, melde ich mich nochmal ...

Bis dahin bleibe ich beim Kopieren der Zelle.

Danke und Gruss

Heiko1985
...