Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

per Excel Mail hyperlink in Outlook Mailbody | Herbers Excel-Forum


Betrifft: per Excel Mail hyperlink in Outlook Mailbody von: Fettertiger
Geschrieben am: 17.12.2009 13:14:55

Hallo werte Experten,

als ich seinerzeit von VBA kaum mehr wusste als für was VBA überhaupt steht, habe ich mir im Internet ein Makro zum Versenden von Emails aus Excel heraus (via Outlook) gesucht. Dieses "grund"-Makro verrichtet in vielen meiner tools treue Dienste:

Sub send_Email()
    Dim ol, Mail As Object
    Dim OlbyValue
    
    On Error GoTo mailerrorhandler
    F_link = ActiveSheet.Range("b3").Value & ActiveSheet.Range("b4").Value
    F_link = Replace(F_link, " ", "%20")
    MBody = ActiveSheet.Range("b2").Value
    
    MBody = Replace(MBody, "((Link))", F_link)
    Set ol = CreateObject("Outlook.Application")
    Set Mail = ol.CreateItem(0)
    Mail.Subject = "Test"            'kommt normal über eine Variable
    Mail.To = "Test@test.de"         'kommt normal über eine Variable
    Mail.cc = "Test_CC@test.de"      'kommt normal über eine Variable
    Mail.bcc = "Test_BCC@test.de"    'kommt normal über eine Variable
    Mail.body = MBody
    Mail.Display

    'Application.SendKeys "%s" 'Deactivated to allow user to read mail before sending
    ' MsgBox (myInspector.CurrentItem.ReceivedTime)
    Application.ScreenUpdating = False
    Application.Wait Now + TimeSerial(0, 0, 1)
    Application.ScreenUpdating = True

    Set ol = Nothing
    Set Mail = Nothing
    Exit Sub
mailerrorhandler:
    MsgBox ("Outlook is not yet running" & Chr(10) & "Please resend your mails later")
    Err.Clear
    Set ol = Nothing
    Set Mail = Nothing
End Sub

Der Text in der Zelle B2 enthält einen Platzhalter, der durch das makro durch einen Pfad ersetzt wird. Outlook sollte diesen Pfad als Hyperlink darstellen. Leider funzt das nicht zuverlässig, mir scheint, das insbesondere "lange" Pfadnamen zu einem Zeilenumbruch führen und dann nicht mehr als Link interpretiert werden.

Hat jemand von Euch eine Idee, wie ich die Darstellung als Hyperlink "erzwingen" kann?

Muster: https://www.herber.de/bbs/user/66660.zip

Danke und Gruss

Fettertiger

  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: Petra
Geschrieben am: 17.12.2009 13:58:09

Hi Fettertiger

ich nehme an, Du willst im Mail einen Hyperlink erzeugen?! dann:

Mail.body = "file:" & MBody

Klappts?

Lieben Gruß Petra


  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: mumpel
Geschrieben am: 17.12.2009 15:05:51

Hallo!

Das geht nur mit .htmlBody, nur dann bekommst Du einen korrekten Hyperlink. Bei .body handelt es sich um normale Textmails, welche in der Regel keinen HTML-Code verarbeiten können.

Wenn in B3 der Pfad steht und in B4 der Dateiname, dann kannst Du das so machen (.htmlBody)


Sub send_Email()

Dim oApp As Object

Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
    .Subject = "Test"
    .To = "Test@test.de"
    .cc = "Test_CC@test.de"
    .bcc = "Test_BCC@test.de"
    .htmlbody = "<a href=""" & ActiveSheet.Range("B3").Value & _
                  ActiveSheet.Range("B4").Value & """>Hier klicken zu herunterladen</a>"
    .Display
End With

Set olApp = Nothing

End Sub



Wenn Du lieber einen Internetlink benötigst, dann .htmlBody so:


    .htmlbody = "<a href=""http://xlforum.herber.de/" & _
                  ActiveSheet.Range("B4").Value & """>Hier klicken zum herunterladen</a>"



Gruß, René


  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: Fettertiger
Geschrieben am: 17.12.2009 15:46:33

Hi Mumpel, hallo Petra,

ist leider (noch) nicht ganz was ich brauche. Petras Lösung klappt nicht weil in der Zelle die Mbody füllt eben nicht nur der Pfad, sondern der ganze text steht - der Hyperlink steht somit an der falschen stelle.


Ich habe Mumpels Lösung etwas angepasst, mir verschwinden damit aber sämtliche Zeilenumbrüche.
Kann ich die Umbrüche auch entsprechend "replacen"?

Hier mein angepasstes Macro:

Sub send_Email_2()
Dim f_link As String
Dim olApp As Object
Dim mbody As String
mbody = ActiveSheet.Range("b2").Value
f_link = ActiveSheet.Range("B3").Value & ActiveSheet.Range("B4").Value
f_link = "click here"
mbody = Replace(mbody, "((Link))", f_link)
Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
    .Subject = "Test"
    .To = "Test@test.de"
    .cc = "Test_CC@test.de"
    .bcc = "Test_BCC@test.de"
    .htmlbody = mbody
    .Display
End With

Set olApp = Nothing

End Sub
Ich sehe jetzt zwar einen Link, wenn ich darauf mit klicke wird das File aber nicht geöffnet (liegt vielleicht daran dass es sich um ein File in einem Verzeichnis und nicht um eine URL handelt?)

Danke und Gruss
Fettertiger


  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: mumpel
Geschrieben am: 17.12.2009 16:14:05

In HTML werden Zeilenumbrüche mit <br> erzeugt. Diese entweder direkt mit in der Zelle eingeben oder zusätzlich erzeugen. Du kannst das Anschreiben auch direkt in VBA angeben. Könnte so aussehen:


.htmlBody = "Sehr geehrte Damen und Herren,<br><br>,anbei gewünschte Unterlagen." & _
          "<br><br>Mit freundlichen Grüßen,<br>Fettertiger."

Code eingefügt mit VBA in HTML 2.0


Zum Ersetzen der Zeilenumbrüche könntest Du es so versuchen:

Sub test()
Dim strT As String

strT = Range("A1")
strT = Replace(strT, Chr(13), "<br>")
End Sub

Code eingefügt mit VBA in HTML 2.0



  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: mumpel
Geschrieben am: 17.12.2009 16:24:34



Zitat:
Ich sehe jetzt zwar einen Link, wenn ich darauf mit klicke wird das File aber nicht geöffnet (liegt vielleicht daran dass es sich um ein File in einem Verzeichnis und nicht um eine URL handelt?)



Nein, dass liegt an Deinen Einstellungen. Bei mir erscheint ein Dialog, in dem ich auswählen kann, ob geöffnet oder gespeichert werden soll. Bei mir funktioniert das Öffnen problemlos. Prüfe mal die Sicherheitseinstellungen von Outlook. Möglicherweise blockiert Outlook Links auf lokale Pfade.


  

Betrifft: AW: per Excel Mail hyperlink in Outlook Mailbody von: Fettertiger
Geschrieben am: 17.12.2009 16:56:23

Hi Mumpel,

ich weiss nicht warum, bisher kam immer nur ein Hinweis ob ich das den wirklich tun will, und danach kam besagter "General Fehler". Komischerweise funktioniert der Link jetzt aber (ohne das ich was geändert habe) einwandfrei.

Das Zeilenumbruchproblem habe ich Mittlerweile glöst. Ich ersetze einfach die Chr(10) im Mbody - String durch <br>. Der neue Code sieht somit so aus:

Sub send_Email_2()
Dim f_link As String
Dim olApp As Object
Dim mbody As String
mbody = ActiveSheet.Range("b2").Value
f_link = ActiveSheet.Range("B3").Value & ActiveSheet.Range("B4").Value
f_link = "click here"
mbody = Replace(mbody, "((Link))", f_link)
mbody = Replace(mbody, Chr(10), "<br>")

Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
    .Subject = "Test"
    .To = "Test@test.de"
    .cc = "Test_CC@test.de"
    .bcc = "Test_BCC@test.de"
    .htmlbody = mbody
    .Display
End With

Set olApp = Nothing

End Sub


Vielen Dank für Eure Hilfe!

Grüße
Fettertiger


Beiträge aus den Excel-Beispielen zum Thema "per Excel Mail hyperlink in Outlook Mailbody"