Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Email senden mit Link im Body
#1
Hallo,
ich habe in Excel eine kleine Prozedur wodurch eine Email automatisiert versendet wird, das klappt auch grundsätzlich ohne Problem, jetzt hätte ich nur gerne im Body Element einen Link der anklickbar ist, aber da fehlt mir die idee wie ich das hinbekomme.

Bis jetzt sieht das ganze so aus:

Code:
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)

    With objMail
        .to = EmailEmpfaenger
        .Subject = "Neuer Bericht von " & txtBesuch
        .Body = "Im Anhang befindet sich das Protokoll zum Besuch von " & txtBesuch & "." & " Das Protokoll finden Sie auch auf dem Laufwerk unter " & Ort & "."
        .Attachments.Add Ort & txtBericht.Value & "-" & ID & "-" & Format(Now, "dd.mm.yyyy hh mm") & ".pdf"
       
        .Send
    End With

Als Link sollte nun der "Ort" hinter "Das Protokoll finden Sie auch auf dem Laufwerk........." sein. D

Danke
Antworten Top
#2
Hallo, 19 

prinzipiell so - statt & Ort: 21 

Code:
& "file://C:\TMP\TestDatei.xlsx"

Bzw. wenn das Dokument auf einem Server liegt auch: Dodgy 

Code:
& "file://\\Server\Group\Projekte\TestDatei.xlsx"
________
Servus
Case
Antworten Top
#3
Moin,

das Problem hat so ziemlich nix mit Excel zu tun, aber sei es drum:
Für einen Anklickbaren Link in Outlook muss entweder der Empfänger den Plaintext-Body parsen (das machen einige Mail-Clients automatisch), oder du verwendest direkt den HTML-Body und fügst den Link in entsprechende Anchor-Tags ein. Dazu empfiehlt es sich, den HTML-Body direkt vollständig in "ordentliches" HTML zu setzen. Dazu sind einfache Grundkenntnisse in HTML vollkommen ausreichend:
Code:
[...]
   .HTMLBody="<p>Hallo du,</p><p>hier der Link, den ich dir schon immer senden wollte: <a href=""https://www.clever-excel-forum.de"">Klick den freundlichen Text</a></p>"
[...]

Viele Grüße
derHöpp
Antworten Top
#4
Hi,
wieso? Das "Ort" ist ja eine Variable wo der Speicherort der Datei drin gespeichert ist, daher sollte das doch gehen oder nicht? Die Variable wird ja dann als Text auch korrekt in der ankommenden Email angezeigt, nur leider nicht als anklickbarer Link.
Antworten Top
#5
(27.09.2022, 13:28)derHoepp schrieb: Moin,

das Problem hat so ziemlich nix mit Excel zu tun, aber sei es drum:
Für einen Anklickbaren Link in Outlook muss entweder der Empfänger den Plaintext-Body parsen (das machen einige Mail-Clients automatisch), oder du verwendest direkt den HTML-Body und fügst den Link in entsprechende Anchor-Tags ein. Dazu empfiehlt es sich, den HTML-Body direkt vollständig in "ordentliches" HTML zu setzen. Dazu sind einfache Grundkenntnisse in HTML vollkommen ausreichend:
Code:
[...]
   .HTMLBody="<p>Hallo du,</p><p>hier der Link, den ich dir schon immer senden wollte: <a href=""https://www.clever-excel-forum.de"">Klick den freundlichen Text</a></p>"
[...]

Viele Grüße
derHöpp

Hi, naja Excel deshalb weil ich die Email aus Excel heraus versenden will..
Irgedwie bekomme ich das auch mit deinem HTML Beispiel nicht hin, was daran liegt, das ich sowohl im ersten Teil eine Variable einsetzen möchte 
Code:
txtBesuch

die dann aufgelöst im Test erscheint, also ca. so im Code

Code:
.HTMLBody = "<p>Im Anhang befindet sich das Protokoll zum Besuch des Lieferanten  & txtBesuch  & .  </p>
Allerdings wird das dann in der Email einfach als Text angezeigt und nicht die Variable txtBesuch aufgelöst und das ähnliche Problem habe ich dann auch beim Link.

Code:
<p>Das Protokoll finden Sie auch auf dem Laufwerk unter: <a href="" & Ort & "">Protokoll</a></p>"
Wobei "Ort" wieder eine Variable ist die den Link enthält,  "Protokoll" wird zwar in der Email als Link angezeigt, allerdings verweist es dann auf "& Ort &"

Danke
Antworten Top
#6
Hallo, 19 

wenn Ort Pfad und Dateiname enthält, dann so: 21 

Code:
.Body = "Hier Änderung beschreiben" & Chr$(13) & "file://" & Ort
________
Servus
Case
Antworten Top
#7
Hallo Mia,

hier noch ein Vorschlag.
Wie DeHoepp schon vorgeschlagen hat, kannst Du eine HTML-eMail nehmen und Deinen Link dort reinsetzen.

Links werden in A-Tags gesetzt. Das u.a. Beispiel nimmt den Link aus der Ort-Variablen und zeigt den Link auch als Text so an. Der angezeigte Linktext kann natürlich auch abweichend vom Link selbst sein.
Ob Du nun das Ganze in P-Tags oder DIV-Tags (Absatz), SPAN-Tags (Bereich), BODY-Tag oder gar keinen weiteren Tag setzt, ist hier mal egal.

Zeilenumbrüche in einer HTML-Mail erfolgen über den BR-Tag.

PS: Vorteil einer HTML-Mail ist auch, dass Du Deinen Text formatieren kannst.


Code:

Sub Test()
  Ort = "http:MyOrt.de"

  With CreateObject("Outlook.Application").CreateItem(0)
     .to = EmailEmpfaenger
     .Subject = "Neuer Bericht von " & txtBesuch
     .htmlBody = "Im Anhang befindet sich das Protokoll zum Besuch von " & txtBesuch & ".<br>" _
               & "Das Protokoll finden Sie auch auf dem Laufwerk unter <a href='" & Ort & "'>" & Ort & "</a>."
     .Attachments.Add Ort & txtBericht.Value & "-" & ID & "-" & Format(Now, "dd.mm.yyyy hh mm") & ".pdf"
     .Send
  End With
End Sub

_________
viele Grüße
Karl-Heinz
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • Mila
Antworten Top
#8
Hi Mila,
(29.09.2022, 04:44)Mila schrieb:
Code:
.HTMLBody = "<p>Im Anhang befindet sich das Protokoll zum Besuch des Lieferanten  & txtBesuch  & .  </p>
Allerdings wird das dann in der Email einfach als Text angezeigt und nicht die Variable txtBesuch aufgelöst und das ähnliche Problem habe ich dann auch beim Link.

Code:
<p>Das Protokoll finden Sie auch auf dem Laufwerk unter: <a href="" & Ort & "">Protokoll</a></p>"
Wobei "Ort" wieder eine Variable ist die den Link enthält,  "Protokoll" wird zwar in der Email als Link angezeigt, allerdings verweist es dann auf "& Ort &"

Du solltest dich einmal mit der Verarbeitung von Strings auseinandersetzen. Wenn du innerhalb eines Strings eine Variable verwenden willst, dann musst du erst den String beenden, die Variable mit & Var & einfügen und dann den String fortsetzen:
Code:
.HTMLBody = "<p>Im Anhang befindet sich das Protokoll zum Besuch des Lieferanten"  & txtBesuch  & " .  </p>"
bzw.
Code:
"<p>Das Protokoll finden Sie auch auf dem Laufwerk unter: <a href=""" & Ort & """>Protokoll</a></p>"
Wenn du innerhalb eines Strings "-Zeichen brauchst, musst du diese doppelt eingeben weil ein einfaches "-Zeichen den String beendet.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • Mila
Antworten Top
#9
Hallo!

Ich habe mal vor langer Zeit ein Excel-Add-In geschrieben, bei dem es verschiedene Möglichkeiten zum Erstellen von Emails gibt. http://www.rholtz-office.de/counters/getfile.php?id=1 (Nur für 32-bit-Office, ab Office 2007. Wird nicht weiterentwickelt). VBA-Kennwort ist ein kleines a. Da könnt ihr euch so manchen Code für eure Projekte rausnehmen.

Gruß, René
[-] Folgende(r) 1 Nutzer sagt Danke an mumpel für diesen Beitrag:
  • Mila
Antworten Top
#10
@Volti,
ein Traum, das klappt ganz hervorragend, danke auch für die erklärungen!
LG
Mila
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste