Anzeige
Archiv - Navigation
1576to1580
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

Weiter, wenn keine Anlage vorhanden

Weiter, wenn keine Anlage vorhanden
11.09.2017 13:21:20
Nordwestler
Hallo allerseits,
ich habe da einen wunderschönen Code zur Erstellung einer Mail aus Excel mit drei Dateianhängen sogar aus verschiedenen Ordnern. Funktioniert einwandfrei, solange auch alle drei Dateianhänge vorhanden sind.
strDateiname = Range("g4").Value
strAttachmentPfad1 = Environ("USERPROFILE") & "\Desktop\Excel\Ergebnisse\" & strDateiname
strDateiname = Range("d15").Value
strAttachmentPfad2 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
strDateiname = Range("d16").Value
strAttachmentPfad3 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
'Empfängeradressen holen aus Zeile 2, Spalte 5 (=E) usw.
.To = Cells(11, 4) & ";" & Cells(12, 4)
.Cc = Cells(13, 4) & ";" & Cells(14, 4)
'Betreff holen
.Subject = Cells(7, 4)
' Textblock: Anrede aus Zeile 2; Spalte 10 (=J), Textbaustein 1 & 2;
.Body = Cells(10, 4) & Cells(8, 4) & Cells(9, 4)
'Anlage aktivieren
.Attachments.Add strAttachmentPfad1
.Attachments.Add strAttachmentPfad2
.Attachments.Add strAttachmentPfad3
'Mail anzeigen vor Versand
.Display
Wenn es nur zwei sind, bricht die Pracht zusammen :-(
Wie kann ich dem Makro erklären, dass es einfach weitergehen soll, wenn kein Dateianhang vorhanden ist?
Beste Grüße
Reinhard

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 13:27:05
Werner
Hallo Reinhard,
'Anlage aktivieren
If Not strAttachmentPfad1 = "" Then
.Attachments.Add strAttachmentPfad1
End If
If Not strAttachmentPfad2 = "" Then
.Attachments.Add strAttachmentPfad2
End If
If Not strArrachmentPfad3 = "" Then
.Attachments.Add strAttachmentPfad3
End If
Ungestestet
Gruß Werner
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 14:36:32
Nordwestler
Hallo Werner,
vielen Dank,
das sah überzeugend aus, will aber nicht richtig.
Auch nicht, nachdem ich aus strArrachmentPfad3 wieder strAttachmentPfad3 gemacht hatte - da muss man erst mal drauf kommen.
Jetzt läuft der Code zwar durch, auch richtigerweise ohne Anhänge, wenn leer, aber jedesmal meckert er anschließend: "Die Datei kann nicht gefunden werden.Überprüfen Sie den Pfad und den Dateinamen."
Kann er ja auch nix finden, wo nix ist, aber dann soll er auch nicht meckern!
Gruß
Reinhard
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 15:18:41
Werner
Hallo Reinhard,
versuch mal die Zellen auf ungleich leer abzufragen:
If Range("G4")  "" Then
strDateiname = Range("g4").Value
strAttachmentPfad1 = Environ("USERPROFILE") & "\Desktop\Excel\Ergebnisse\" & strDateiname
End If
If Range("D15")  "" Then
strDateiname = Range("d15").Value
strAttachmentPfad2 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
End If
If Range("D16")  "" Then
strDateiname = Range("d16").Value
strAttachmentPfad3 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
End If
Gruß Werner
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 15:51:57
Nordwestler
Hallo Werner,
ähnlich wie vorher: Der Pfad ist nicht vorhanden. Überprüfen Sie den Pfad. :-(
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 16:02:51
Werner
Hallo Reinhard,
dann zeig mal den ganzen Code.
Gruß Werner
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 16:12:27
Nordwestler

Sub Mail_in_Outlook_erzeugen_und_mit_Anhang_versenden()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim strAttachmentPfad1 As String
Dim strAttachmentPfad2 As String
Dim strAttachmentPfad3 As String
Dim strDateiname As String
Dim strSignatur As String
If Range("G4")  "" Then
strDateiname = Range("g4").Value
strAttachmentPfad1 = Environ("USERPROFILE") & "\Desktop\Excel\Ergebnisse\" & strDateiname
End If
'strDateiname = Range("g4").Value
'strAttachmentPfad1 = Environ("USERPROFILE") & "\Desktop\Excel\Ergebnisse\" & strDateiname
If Range("D15")  "" Then
strDateiname = Range("d15").Value
strAttachmentPfad2 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
End If
'strDateiname = Range("d15").Value
'strAttachmentPfad2 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
If Range("D16")  "" Then
strDateiname = Range("d16").Value
strAttachmentPfad3 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
End If
'strDateiname = Range("d16").Value
'strAttachmentPfad3 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
' Outlook Signatur aktivieren
.GetInspector.Display
strSignatur = .Body
'Empfängeradressen holen aus Zeile 2, Spalte 5 (=E) usw.
.To = Cells(11, 4) & ";" & Cells(12, 4)
.Cc = Cells(13, 4) & ";" & Cells(14, 4)
'Betreff holen
.Subject = Cells(7, 4)
' Textblock: Anrede aus Zeile 2; Spalte 10 (=J), Textbaustein 1 & 2; Signatur
.Body = Cells(10, 4) & Cells(8, 4) & Cells(9, 4) & strSignatur
'Anlage aktivieren
.Attachments.Add strAttachmentPfad1
.Attachments.Add strAttachmentPfad2
.Attachments.Add strAttachmentPfad3
'Mail anzeigen vor Versand
.Display
'Ohne aktiviertes "Display" wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
'Outlook schliessen
'OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 19:52:57
Werner
Hallo Reinhard,
noch ein Versuch. Ich kann leider diesbezüglich nichts testen, da ich Outlook privat nicht nutze.
Sub Mail_in_Outlook_erzeugen_und_mit_Anhang_versenden()
Dim boSchalter As Boolean
Dim Nachricht As Object, OutApp As Object
Dim strAttachmentPfad1 As String
Dim strAttachmentPfad2 As String
Dim strAttachmentPfad3 As String
Dim strDateiname As String
Dim strSignatur As String
Set OutApp = CreateObject("Outlook.Application")
If Range("G4")  "" Then
strDateiname = Range("g4").Value
strAttachmentPfad1 = Environ("USERPROFILE") & "\Desktop\Excel\Ergebnisse\" & strDateiname
boSchalter = True
End If
If Range("D15")  "" Then
strDateiname = Range("d15").Value
strAttachmentPfad2 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
boSchalter = True
End If
If Range("D16")  "" Then
strDateiname = Range("d16").Value
strAttachmentPfad3 = Environ("USERPROFILE") & "\Desktop\Excel\Anlagen\" & strDateiname
boSchalter = True
End If
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
' Outlook Signatur aktivieren
.GetInspector.Display
strSignatur = .Body
'Empfängeradressen holen aus Zeile 2, Spalte 5 (=E) usw.
.To = Cells(11, 4) & ";" & Cells(12, 4)
.Cc = Cells(13, 4) & ";" & Cells(14, 4)
'Betreff holen
.Subject = Cells(7, 4)
' Textblock: Anrede aus Zeile 2; Spalte 10 (=J), Textbaustein 1 & 2; Signatur
.Body = Cells(10, 4) & Cells(8, 4) & Cells(9, 4) & strSignatur
'Anlage aktivieren
If boSchalter Then
If Not strArrachmentPfad1 = "" Then
.Attachments.Add strAttachmentPfad1
End If
If Not strAttachmentPfad2 = "" Then
.Attachments.Add strAttachmentPfad2
End If
If Not strAttachmentPfad3 = "" Then
.Attachments.Add strAttachmentPfad3
End If
End If
'Mail anzeigen vor Versand
.Display
'Ohne aktiviertes "Display" wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
'Outlook schliessen
'OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub
Gruß Werner
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 20:33:17
Nordwestler
Hallo Werner,
das klappt mit einer kleinen Einschränkung: Wenn der Pfad1 mit deinen Formeln ersetzt wird, wird die Anlage nicht angehängt, auch wenn die Zelle "voll" ist. Bei Pfad 2 und 3 klappt es problemlos und ohne zu meckern :-)
Pfad 1 ist aber nicht so dramatisch, weil die ganze Datei nur dazu angelegt ist, die Datei unter Pfad1 zu verschicken, sie also nicht optional wie die beiden anderen, sondern ein Muss. Insofern habe ich für Pfad1 wieder den Ursprungscode hergestellt und damit klappt es mit allen Anlagen wunderbar!
Also ganz doll dicken Dank für deine Hilfe!
Reinhard
PS: Wofür steht boSchalter?
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 21:13:09
Werner
Hallo Reinhard,
das mit Pfad1 wird wohl daran liegen, dass da wieder zwei r statt zwei t reingerutscht sind.
If Not strArrachmentPfad1 = "" Then
boSchalter ist eine Variable vom Typ Boolean. Die kann nur wahr (True) oder falsch (False) sein. Standardmäßig ist sie False. Beim Befüllen deiner Attachment Variablen wird sie dann auf True gesetzt. Vor dem Anfügen der Anlagen an die Mail mit .Attachments.Add prüfe ich, ob boSchalter True ist. Nur dann wird der Befehl zum Anfügen der Anlage ausgeführt. So ist sichergestellt, dass das nur passiert, wenn mindestens eine der Pfad Variablen einen Wert enthält. Vorher wurde das auch ausgeführt wenn alle drei Pfad Variablen leer waren, was zur Fehlermeldung führte.
Gruß Werner
Anzeige
AW: Weiter, wenn keine Anlage vorhanden
11.09.2017 21:18:15
Nordwestler
Alles klar, super! Danke nochmals! OwT
Gerne u. Danke für die Rückmeldung. o.w.T.
11.09.2017 22:12:20
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige