Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
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
Inhaltsverzeichnis

E-Mail-Versand per VBA - Leerzeichen in Variable

E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 09:52:15
Matthias
Hallo liebes Forum.
Folgendes Problem, an dem ich mir nun schon eine Weile die Zähne ausbeiße:
Ich führe regelmäßig eine Prüfung im Excel durch. Einen Teil der zu prüfenden Dinge übernehmen aber Kollegen. Diese werden Per Mail darüber informiert, dass eine neue Datei zur Prüfung vorliegt.
Ich habe es so weit hinbekommen, dass automatisch eine Mail generiert wird, die die Kollegen darüber informiert, was zu tun ist. Das Problem dabei:
Ich generiere über eine Variable einen Link, dem die Kollegen aus der Mail heraus folgen sollen. Leider enthält der Link Leerzeichen, wodurch der Link abgeschnitten wird.
Ich habe zwar schon diverse Lösungsansätze im Netz gefunden (Leerzeichen maskieren, Hochkommas), aber leider bekomme ich diese nicht umgesetzt, da ich Sie nicht richtig verstehe.
Hier mal der Code:

Set oApp = CreateObject("OUTLOOK.Application")
With oApp.CreateItem(0)
.Subject = "ZPL-Prüfliste" & "_" & AG
.To = "xxx.xxxl@yyy-yyy.de"
'.Cc = CCAdr
.Importance = 2
.Display
.htmlbody = "Liebe Kollegen, " & Chr(13) & Chr(13) & "unter " & "a href=" &  Pfad & "ZPL-Prü _
fliste" & "_" & AG & ".xls"">diesem Link" & " findet Ihr eine aktuelle Prüfliste zur " & "AG " & AG & "." & Chr(13) & "Bitte bearbeiten und Bemerkungsfeld ausfüllen."
Set .SendUsingAccount = .Session.Accounts.Item("xxx@yyy-yyy.de")
.Send
End With
Die variablen Pfad und AG werden vorher ausgelesen. In der Variablen Pfad sind mehrer Leerzeichen enthalten, die den Link kaputt machen.
Die
Ich freue mich auf eure Lösungsansätze.
Mfg Matze

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 10:15:11
mumpel
Hallo!
Option Explicit

Public Sub EinfacheMailMitAnhang()

Dim olApp     As Object
Dim AWS       As String
Dim olOldbody As String
Dim strPfad   As String
Dim strAG     As String

strPfad = "http://www.seite.de/"
strAG = "Baumann"

ActiveWorkbook.Save
AWS = ActiveWorkbook.FullName

Set olApp = CreateObject("Outlook.Application")

    With olApp.CreateItem(0)
              .GetInspector.Display
              olOldbody = .htmlBody
              .To = "testserver.de"
              .Subject = "Test"
              .htmlBody = "Hallo!<br><br>Anbei gewünschte Informationen.<br><br>" & _
                          "hier der <a href=""" & strPfad & "ZPL-Prüfliste_" & _
                          strAG & ".xls"">Datei zum Herunterladen</a>" & _
                          "<br><br>Gruß,<br>Max<br><br>" & olOldbody
              .Attachments.Add AWS
    End With

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Sollte die Datei auf einer Festplatte liegen muss man den Link anders schreiben.
Gruß, René
Anzeige
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 10:22:13
UweD
Hallo
reicht es nicht, wenn du die Leerzeichen ersetzt?
Pfad = Replace(Pfad, " ", "_")
LG UweD
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 11:57:45
UweD
Hallo nochmal
hab gerade mal nachgelesen... https://wiki.selfhtml.org/wiki/URL-Codierung
mit
Pfad = Replace(Pfad, " ", "%20")
vorher austauschen
LG UweD
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 10:22:24
Werner
Hallo Matze,
bevor du deine Variable Pfad im Link verwendest:
Pfad = Replace(Pfad, " ", "") 'Leerzeichen entfernen
oder
Pfad = Replace(Pfad, " ", "_")'Leerzeichen durch Unterstrich ersetzen
Gruß Werner
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 11:08:54
Matthias
Hallo Uwe und Werner.
Vielen Dank für eure Vorschläge.
Diese zielen ja darauf ab, den Pfad zu verändern. Es handelt sich dabei ja aber um einen lokalen Netzwerkpfad im Firmen-Netzwerk. Wenn ich also die Pfadbezeichnung im Link verändere, kommt der Link ja nicht mehr an der richtigen Stelle an, damit funktioniert das System nicht mehr.
Ich hab dennoch eure Lösung probiert, dort bekommen ich einen Error 400. Da bin ich leider genauso ratlos, was da nun wieder das Problem ist.
Hallo Rene.
Deine Lösung sieht interessant aus, leider verstehe ich Sie nicht so ganz. Könntest du mir dirt noch ein paar Erläuterungen geben?
In deinem gewählten Beispiel handelt es sich um einen Weblink, dieser ist ohne Leerzeichen, daher verstehe ich nicht so ganz, was du gemacht hast.
Dateianhang möchte ich keinen generieren, das AWS kann also raus.
Was macht der Befehl .GetInspector.Display?
Was bedeutet das in dem html-code?
Was hat es mit dem olOldbody auf sich?
Ich verstehe nicht was olOldbody = .htmlBody und am Ende des E-Mailtextes & olOldbody bedeuten soll.
Ich kann leider in dem Code nicht erkennen, wo das Problem mit dem Leerzeichen gelöst wird. Kannst du mir das noch mal etwas genauer erläutern? Ich möchte gern verstehen, was hier passiert.
Mfg Matze
Anzeige
AW: E-Mail-Versand per VBA - Leerzeichen in Variable
21.06.2017 12:46:03
mumpel
Wenn Du mein Beispiel nimmst müsste es funktionieren.
"olOldBody" ist für die Signatur. Normalerweise wird der gesamte Body überschrieben. Daher ruft man die Email über "GetInspector.Display" auf, speichert die Signatur zwischen und hängt sie am Schluß wieder an.
In Deinem Code fehlte nur ein Anführunsgzeichen, daher wurde der Link nicht korrekt übersetzt.
"<
" ist die HTML-Anweisung für eine Leerzeile. Ich arbeite immer mit HTML-Mail (.htmlBody) anstatt Nur-Text-Mail (.Body).
Nachtrag
21.06.2017 12:47:59
mumpel
Was macht der Server da? Hat was umgesetzt was nicht umgesetzt werden sollte.
Also <br> ist eine HTML-Zeilenumbruchanweisung.
Anzeige
AW: Nachtrag
21.06.2017 14:26:07
Matthias
Hallo Rene.
Vielen lieben Dank, nun funktioniert es.
Mfg Matze
Nachtrag 2
21.06.2017 12:53:16
mumpel
Ein lokaler Link müsste auch funktionieren. Outlook setzt das automatisch richtig um.
Public Sub EinfacheMailMitAnhang()

Dim olApp     As Object
Dim olOldbody As String
Dim strPfad   As String
Dim strAG     As String

strPfad = "C:\"
strAG = "Baumann"


Set olApp = CreateObject("Outlook.Application")

    With olApp.CreateItem(0)
              .GetInspector.Display
              olOldbody = .htmlBody
              .To = "testserver.de"
              .Subject = "Test"
              .htmlBody = "Hallo!<br><br>Anbei gewünschte Informationen.<br><br>" & _
                          "hier der <a href=""" & strPfad & "ZPL-Prüfliste_" & _
                          strAG & ".xlsm"">Datei zum Herunterladen</a>" & _
                          "<br><br>Gruß,<br>Max<br><br>" & olOldbody
    End With

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen