Clever-Excel-Forum

Normale Version: Prüfen ob eine Datei vorhanden ist
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, vielleicht kann mir jemand weiterhelfen.
ich verschicke täglich drei Dateien per Mail, doch nicht immer sind alle 3 Dateien vorhanden bzw. werden benötigt.

Ich möchte also erreichen, das Excel prüft ob die erste Datei vorhanden ist, und sie dann als Anhang ins Mail-Programm einfügt, dann zur nächsten Datei geht.. und so weiter


Sub TEST()
Dim Outlook As Object
Dim Mail As Object
Dim Att As Object
Dim strDateiname As String
Dim Pfad As String
Dim strPDF As String

Set Outlook = GetObject(, "outlook.application")
Set Mail = Outlook.CreateItem(0)
Mail.To = "Empfänger"

Mail.Subject = "Tagesabschluss vom" & " " & Format(Now - 1, "DD.MM.YYYY")

If Dir("H:\DE\Bremen\Garden\Datei_1.pdf") <> "" Then
Mail.Attachments.Add ("H:\DE\Bremen\Garden\Datei_1.pdf")
End If
If Dir("H:\DE\Bremen\Garden\Datei_2.pdf") <> "" Then
Mail.Attachments.Add ("H:\DE\Bremen\Garden\Datei_2.pdf")
End If
If Dir("H:\DE\Bremen\Garden\Datei_3.pdf") <> "" Then
Mail.Attachments.Add ("H:\DE\Bremen\Garden\Datei_3.pdf")
End If

Mail.Body = ("Hallo Frau ...,") & Chr(10) & "" & Chr(10) & ("anbei die Dateien zum Tagesabschluss vom") & " " & Format(Now - 1, "DD.MM.YYYY") _
 & Chr(10) & "" & Chr(10) & (Tabelle1.Range("B9").Value) & Chr(10) & "" & Chr(10) & (Tabelle1.Range("F3").Value)
Mail.Display 

End Sub

Es sollen also nur die vorhandenen Dateien als Anhänge eingefügt werden.

Leider klappt das immer noch nicht, sobald eine Datei fehlt bekomme ich eine Fehlermeldung.

Kann mir jemand helfen?

Vielen Dank

Frank
Hallo Frank,

Welche Fehlermeldung erscheint denn und welche Zeile wird denn gelb markiert?
Hallo Frank,

dein Progrämmchen läuft einwandfrei. Der code ist ok, also kann ich mich nur Schauan anschließen.

Aber mal 'ne Frage und noch ein Tipp.
Warum schließt die die String (Texte) und  Range-Codes zusätzlich noch in Klammern ein?

Wenn die Dateien wirklich so heißen  wie angeführt, kann man das auch in einer Schleife ausführen lassen.

Außerdem kam bei mir gleich ein Fehler, weil ich Outlook nicht geöffnet hatte. Habe Dir mal einen Zusatz reingemacht, der Outlook öffnet, wenn es zu ist.

Ggf. möchtest Du auch noch eine Signatur anfügen?!

Code:
Option Explicit

Sub TEST()
 Dim Outlook As Object
 Dim Mail As Object
 Dim Att As Object
 Dim strDateiname As String
 Dim strPfad As String
 Dim strPDF As String, i As Integer
 Dim sSignatur As String
 
 On Error Resume Next
 Set Outlook = GetObject(, "outlook.application")
 If Outlook Is Nothing Then
   CreateObject ("outlook.application")
 End If
 On Error GoTo 0
 Set Mail = Outlook.CreateItem(0)
 Mail.to = "Empfaänger"

 Mail.Subject = "Tagesabschluss vom" & " " & Format(Now - 1, "DD.MM.YYYY")

 strPfad = "H:\DE\Bremen\Garden\"
 For i = 1 To 3
   If Dir(strPfad & "Datei_" & i & ".pdf") <> "" Then
      Mail.Attachments.Add (strPfad & "Datei_" & i & ".pdf")
   End If
 Next i
 
 Mail.GetInspector
 sSignatur = Mail.body
 
 Mail.body = "Hallo Frau ...," & Chr(10) & Chr(10) & "anbei die Dateien zum Tagesabschluss vom" & " " & Format(Now - 1, "DD.MM.YYYY") _
  & Chr(10) & Chr(10) & Tabelle1.Range("B9").Value & Chr(10) & Chr(10) & Tabelle1.Range("F3").Value & sSignatur
 Mail.Display

End Sub

viele Grüße aus Freigericht
Karl-Heinz
Moin!
Kann ein Moderator mal die echte Mail-Adresse, die sich als Link hinter "Empfaänger" befindet, löschen?

Merci!
Ralf
... erl.
Hallo Karl-Heinz,

erstmal vielen Dank an euch alle.

Die Dateinamen "Datei_1, Datei_2, etc. sind nur als Beispiel gewählt. Real heissen sie Journal, Auswertung und Forecast. Daher klappt das mit der Schleife leider nicht.

Alles läuft perfekt solange alle Dateien vorhanden sind.
Sobald eine Datei fehlt, was passieren kann da nicht jeden Tag alle Dateien versendet werden, bricht das Programm mit einer Fehlermeldung ab.
Hallöchen,

leider haben wir immer noch nicht die angefragten Informationen Sad
Es wird die Zeile markiert die 


versucht eine Datei die nicht vorhanden ist einzufügen.

Es erscheint dann diese Fehlermekdung:

Siehe Anhang
Hallo Frank,

leider ist (bei mir) nichts zu sehen und wir sind genauso schlau wie vorher.

Über die Dir-Funktionalität wird eigentlich abgefangen ob die Datei vorhanden ist und es kommt erst gar nicht zum Einfügen, wenn die nicht da ist.
Ansonsten mal, das verpönte, On Error Resume Next, davor setzen, dann müsste auf jeden Fall Ruhe sein.

viele Grüße
Karl-Heinz