Ich hab ein kleines (vielleicht banales) Problem.
Ich habe eine Outlook - Textnachricht per VBA eingebunden und möchte den Text mit einem Textfeld erweitern. Jedoch sollte das Textfeld entfernt werden, wenn dieses nicht ausgefüllt wird.
sTxt = InputBox("Ergänzung zum Angebot", "Erfassung")
NachrichtenText = "<span style=""font-size:11pt; font-family:'Calibri'"">" & _
[Anrede] & "</p>" & _
"vielen Dank für Ihre Anfrage.<br></br>" & vbCrLf & _
"Als Anlage erhalten Sie das von Ihnen gewünschte Angebot.<br></br><br></br> " & vbCrLf & _
[sTxt] & vbCrLf & _
"Wir hoffen wir haben Ihnen ein interessantes Angebot unterbreitet.<br></br>" & vbCrLf & _
Irgendwie stehe ich dabei auf dem Schlauch (oder stelle mich doof an ::) )
Hallo,
leider ist der Code nur bruchstückhaft und mir ist auch nicht klar wie die Outlook-Nachricht angesteuert wird. Poste doch mal den ganzen Code dazu, incl Prozedurkopf und -fuß.
Davon abgesehen würde ich dir empfehlen die Eingaben nicht über eine Inputbox, sondern über ungebundene Felder im Formular entgegen zu nehmen.
Hallo,
Zitat von: Berlin-Lackierung.de am August 16, 2016, 15:16:35Jedoch sollte das Textfeld entfernt werden, wenn dieses nicht ausgefüllt wird.
zeige oder beschreibe doch bitte, was
genau du nicht in der Ausgabenachricht haben möchtest, wenn die Eingabe leer ist.
Sorry für die bruchhafte Aussagen - bin neu hier ;) Es geht darum, dass ich in eine "Standarttext" - Mail nochmals eine "freie" Information einfügen möchte, bevor diese versendet wird. Was ja soweit klappt, jedoch wenn das Feld leer bleibt, steht dennoch der "Absatz" im Mail-Text, was gegenüber unseren Kunden "doof" aussieht.
Hier der Code (sieht ein wenig unübersichtlich aus...)
Dim NachrichtenText As String
Dim myMail As Outlook.MailItem
Dim myOutlApp As Outlook.Application
' Dim sTxt As String
Set myOutlApp = New Outlook.Application
Set myMail = myOutlApp.CreateItem(olMailItem)
sTxt = InputBox("Ergänzung zum Angebot", "Erfassung")
NachrichtenText = "<span style=""font-size:11pt; font-family:'Calibri'"">" & _
[Anrede] & "</p>" & _
"vielen Dank für Ihre Anfrage.<br></br>" & vbCrLf & _
"Als Anlage erhalten Sie das von Ihnen gewünschte Angebot.<br></br><br></br> " & vbCrLf & _
[sTxt] & vbCrLf & _
"Wir hoffen wir haben Ihnen ein interessantes Angebot unterbreitet.<br></br>" & vbCrLf & _
"Für Rückfragen stehen wir Ihnen gerne jederzeit zur Verfügung.<br></br>" & vbCrLf & _
[sTxt] & vbCrLf & _
"<span style=""font-size:8pt;font-weight:normal; font-family:'Calibri'"">"
With myMail
.To = AnEMail
.CC = ""
.Subject = BezugAngebot & " _ AngNr.: " & [AngNummer]
.HTMLBody = NachrichtenText & " <br> " & " <br> " & Signatur_zurückgeben & "</HTML>"
.Attachments.Add "C:\AngeboteKunden\" & [Text55] & "\AngebotMail_" & [AngNummer] & "_" & [Bemerkung_Angebot] & ".pdf"
.Attachments.Add "C:\AngeboteKunden\AllgGeschäftsbed.pdf"
.Importance = 2
myMail.Display ' .Send
End With
End Sub
Du kannst analog zu Leerzeichen in kombiniertem Feld vermeiden (http://www.donkarl.com/FAQ/FAQ2Allgemein.htm#2.12) mit Variant-Variablen arbeiten.
Moin,
bist du sicher, dass der Wert der Inputbox mehrfach im Nachrichtentext eingebaut wird?
Davon ausgehend kannst du folgendes probieren, geht sicher eleganter, aber auf die Schnelle ;)
Dim NachrichtenText As String
Dim myMail As Outlook.MailItem
Dim myOutlApp As Outlook.Application
' Dim sTxt As String
Set myOutlApp = New Outlook.Application
Set myMail = myOutlApp.CreateItem(olMailItem)
sTxt = InputBox("Ergänzung zum Angebot", "Erfassung")
If nz(sTxt,"") Then
NachrichtenText = "<span style=""font-size:11pt; font-family:'Calibri'"">" & _
[Anrede] & "</p>" & _
"vielen Dank für Ihre Anfrage.<br></br>" & vbCrLf & _
"Als Anlage erhalten Sie das von Ihnen gewünschte Angebot.<br></br><br></br> " & vbCrLf & _
"Wir hoffen wir haben Ihnen ein interessantes Angebot unterbreitet.<br></br>" & vbCrLf & _
"Für Rückfragen stehen wir Ihnen gerne jederzeit zur Verfügung.<br></br>" & vbCrLf & _
"<span style=""font-size:8pt;font-weight:normal; font-family:'Calibri'"">"
Else
NachrichtenText = "<span style=""font-size:11pt; font-family:'Calibri'"">" & _
[Anrede] & "</p>" & _
"vielen Dank für Ihre Anfrage.<br></br>" & vbCrLf & _
"Als Anlage erhalten Sie das von Ihnen gewünschte Angebot.<br></br><br></br> " & vbCrLf & _
[sTxt] & vbCrLf & _
"Wir hoffen wir haben Ihnen ein interessantes Angebot unterbreitet.<br></br>" & vbCrLf & _
"Für Rückfragen stehen wir Ihnen gerne jederzeit zur Verfügung.<br></br>" & vbCrLf & _
[sTxt] & vbCrLf & _
"<span style=""font-size:8pt;font-weight:normal; font-family:'Calibri'"">"
End If
With myMail
.To = AnEMail
.CC = ""
.Subject = BezugAngebot & " _ AngNr.: " & [AngNummer]
.HTMLBody = NachrichtenText & " <br> " & " <br> " & Signatur_zurückgeben & "</HTML>"
.Attachments.Add "C:\AngeboteKunden\" & [Text55] & "\AngebotMail_" & [AngNummer] & "_" & [Bemerkung_Angebot] & ".pdf"
.Attachments.Add "C:\AngeboteKunden\AllgGeschäftsbed.pdf"
.Importance = 2
myMail.Display ' .Send
End With
End Sub
Hallo,
und ganz nebenbei, der Zusatztext gehört auch in eine Tabelle, sonst ist er ja nicht mehr nachvollziehbar (außer auf dem Mail).
Und wenn man feststellt, dass das Mail inhaltlich nicht stimmte müsste man auch den Zusatztext wieder neu eingeben.
Super - Danke an alle... Warum bin ich nicht selbst darauf gekommen?
Jedoch sieht die "Prüfung" nachher dann so aus: If Nz(sTxt, "") = "" Then
Zitat von: MzKlMu am August 17, 2016, 10:24:59
Hallo,
und ganz nebenbei, der Zusatztext gehört auch in eine Tabelle, sonst ist er ja nicht mehr nachvollziehbar (außer auf dem Mail).
Und wenn man feststellt, dass das Mail inhaltlich nicht stimmte müsste man auch den Zusatztext wieder neu eingeben.
Ja, ich weiß dass der Zusatztext auch in eine Tabelle gehören sollte, jedoch ist dieser nicht entscheidend für eine Rückverfolgbarkeit (oder ausschlaggebend für das Angebot) sondern nur als Information gedacht.