VBA Outlook 2003 - Dateien automatisch versenden

Dieses Thema VBA Outlook 2003 - Dateien automatisch versenden im Forum "Microsoft Office Suite" wurde erstellt von Mr_Tom, 27. Nov. 2008.

Thema: VBA Outlook 2003 - Dateien automatisch versenden Hallo. Ich habe folgendes Problem. Ich muss regelmäßig *.csv Dateien in einzelnen Mails an eine bestimmte Adresse...

  1. Hallo.

    Ich habe folgendes Problem. Ich muss regelmäßig *.csv Dateien in einzelnen Mails an eine bestimmte Adresse schicken. Da ich bei >50 Dateien leicht aus dem Rhythmus komme, welche bereits Versand ist und welche nicht, war meine Idee eine Prozedur zu schreiben, die die Dateien zählt, für jede eine neue Mail anlegt und jeweils eine dieser Dateien anhängt. Der automatische Emailversand steht bereits:

    Code:
    Option Explicit
    Sub senden()
    
    Dim fso As Object, a as Byte
    Dim ol As Outlook.Application
    Dim olMail As MailItem
    
    Set ol = CreateObject(Outlook.Application)
    Set olMail = ol.CreateItem(olMailItem)
    Set fso = CreateObject(Scripting.Filesystemobject)
    
    
    For a = 1 To fso.getfolder(C:/bla/bla).Files.Count
    
    With olMail
      .To = email@empfänger.de
      .Subject = Betreff
      .Attachments.Add (strgAnhang)-> hier soll jeweils die nächste Datei eingefügt werden
      .Send
    End With
    
    Set olMail = Nothing
    Set ol = Nothing
    Set fso = Nothing
    
    
    Next a
    End Sub
    
    Komme hier leider nicht weiter. Wer kann mir helfen?

    Dankeschön
     
  2. Hallo Mr_Tom,

    also mir stellen sich noch einige Fragen:

    a) Aus welchem Programm heraus soll das makro gestartet werden ?
    b) Wie wird der Zusammenhang csv-datei <-> mail-Adresse hergestellt (Excel-Tabelle ?) ?
    c) Wo ist der Ablageort der jeweiligen Datei beschrieben (Excel-Tabelle) ?
    d) Warum werden nicht alle Dateien gleichzeitig versendet ?
    e) Wenn Zähler, wie und wann soll der wieder zurückgesetzt werden ?
    ...
    Beschreib bitte den Prozess mal etwas ausführlicher.

    Matjes :)
     
  3. Hallo Matjes.

    Nach Möglichkeit soll das Makro direkt aus MS Outlook 2003 gestartet werden. Die Mailadresse ist immer
    die gleiche, der Zusammenhang zwischen Datei und Mailadresse muss somit nicht auf besondere Weise hergestellt werden. Der Ablageort der Dateien ist auch statisch, es sollen immer alle Dateien des Ordners C:/bla/bla versendet werden. Bei der Empfängeradresse handelt es sich um eine Systemadresse, die leider immer nur einen Mailanhang verarbeiten kann, deswegen können nicht alle Dateien in eine Mail eingefügt werden, es darf immer nur eine Datei pro Mail gesandt werden. Der Zähler soll einmal alle Dateien im Ordner zählen, diese Anzahl an Mails schreiben und anschließend werden die Dateien manuell von mir gelöscht. Beim nächsten Durchlauf dann halt wieder von vorn.
    Ich hoffe ich konnte Dir ausführliche Informationen liefern, ich komme bei diesem Thema allein leider immernoch nicht weiter.

    Vielen Dank
     
  4. Wer oder was hindert dich daran, die Datein vor dem Versand in ein Archiv (.zip oder .rar) zu packen? ???
     
  5. Wie gesagt, die Empfängeradresse ist eine Systemadresse, die die *.csv Dateien automatisch weiterverarbeitet und lediglich einen Anhang pro Mail im *.csv Format lesen kann.
     
  6. Die Dateien lassen sich vor der Weiterverarbeitung nicht wieder auspacken?

    Wer keine Arbeit hat, macht sich halt welche. :)
     
  7. Hallo ex tempore,

    das Leben könnte ja so einfach sein ... Leider habe ich auf die Verarbeitung nach dem Versandt meiner Mail keinen Einfluss.
     
  8. Hallo Mr_Tom,

    dann probier es mal mit folgendem Makro. Die Konstanten mußt du noch an deine Gegebenheiten anpassen.

    Gruß Matjes :)
    Code:
    Sub OL_DateienImVerzVersenden()
    
     Const c_VERZEICHNIS_PFAD = C:/bla/bla
     Const c_FILES_EXTENSION = .csv
     
     Dim f() As String->Feld für LangeDateiNamen
    
     If Not FilesImVerzeichnisBestimmen(c_VERZEICHNIS_PFAD, c_FILES_EXTENSION, f()) Then GoTo AUFRAEUMEN
     If Not FilesPerOutlookVersenden(f()) Then GoTo AUFRAEUMEN
    
    AUFRAEUMEN:
    End Sub
    
    '************************************************************************
    Private Function FilesPerOutlookVersenden(f() As String) As Boolean
    
     Const c_MAIL_ADRESSE = matjes@wintotal-mitglied.de
     Const c_MAIL_BETREFF = mail an mein Programm
     Const c_MAIL_TEXT = Dies ist eine automatisch erstellte mail.
     
     Dim oOL As Outlook.Application
     Dim oMail As MailItem
     Dim x As Long
    
     On Error GoTo AUFRAEUMEN
    
     Set oOL = New Outlook.Application
     For x = LBound(f()) To UBound(f())
      Set oMail = oOL.CreateItem(olMailItem)
      With oMail
        .To = c_MAIL_ADRESSE
        .CC = 
        .BCC = 
        .Subject = c_MAIL_BETREFF
        .Body = c_MAIL_TEXT
        .Attachments.Add f(x)
        .OriginatorDeliveryReportRequested = False
        .ReadReceiptRequested = False
           ->.Display->mit .Display wird die mail erzeugt, aber nicht abgeschickt werden.
       -> .Send ist in diesem Fall auszukommentieren
        .Send
      End With
      Set oMail = Nothing
     Next
     Set oOL = Nothing
    
     FilesPerOutlookVersenden = True
    AUFRAEUMEN:
     If Err.Number <> 0 Then
      MsgBox _
      FehlerNr:  & Err.Number & vbLf & _
      Beschreibung:  & Err.Description & vbLf, _
      vbOKOnly, Fehler beim Mail-Versand
     End If
    End Function
    
    '************************************************************************
    Private Function FilesImVerzeichnisBestimmen(sPfad As String, sExtension As String, f() As String) As Boolean
    
     Dim oFso As Object, oFiles As Object, oF As Object
     Dim fCnt As Long, x As Long
     Dim sName As String
    
    -> Verweis auf das FileSystemObject erstellen
     On Error Resume Next: Set oFso = CreateObject(Scripting.FileSystemObject): On Error GoTo 0
     If oFso Is Nothing Then
      MsgBox Scripting.FileSystemObject nicht vorhanden.
      GoTo AUFRAEUMEN
     End If
    
    ->prüfen, ob der Pfad vorhamdem ist
     If Not oFso.FolderExists(sPfad) Then
      MsgBox Verzeichnis nicht vorhanden:  & vbLf & sPfad: GoTo AUFRAEUMEN
     End If
     Set oFiles = oFso.getFolder(sPfad).Files
    
    ->prüfen, ob Files vorhamden sind
     If oFiles.Count < 1 Then
      MsgBox Keine Datei im Verzeichnis vorhanden:  & vbLf & sPfad
      GoTo AUFRAEUMEN
     End If
     
    ->Dateiendung prüfen, vollen Dateinamen merken
     fCnt = 0
     ReDim f(1 To oFiles.Count)
     For Each oF In oFiles
      sName = oF.Name
      If LCase(Right(sName, Len(sExtension))) = LCase(sExtension) Then
       fCnt = fCnt + 1
       f(fCnt) = oF.Path
      End If
     Next
     
    ->prüfen, ob relevante Files vorhanden sind
     If fCnt < 1 Then
      MsgBox Keine relevanten Dateien im Verzeichnis vorhanden:  & vbLf & sPfad
      GoTo AUFRAEUMEN
     End If
     ReDim Preserve f(1 To fCnt)
     
     FilesImVerzeichnisBestimmen = True
    AUFRAEUMEN:
     On Error GoTo 0
     Set oFso = Nothing: Set oFiles = Nothing: Set oF = Nothing
    End Function
     
  9. Vielen Dank Matjes,

    es funktioniert ausgezeichnet. Die genaue Funktionsweise konnte ich mir allerdings noch nicht anschauen, werde dies aber noch tun.
     
Die Seite wird geladen...

VBA Outlook 2003 - Dateien automatisch versenden - Ähnliche Themen

Forum Datum
Fenster Outlook-Nachrichtenüberprüfung OL2003 Microsoft Office Suite 25. Dez. 2013
Outlook 2003 Mails werden unvollständig gesendet Microsoft Office Suite 13. Dez. 2013
Outlook 2003 druckt keine Mails im html-format Windows XP Forum 4. Okt. 2013
Outlook von Office 2003 Prof. Windows XP Forum 16. Mai 2009
Outlook 2003 Tool zum Anzeigen des Passwortes zum Öffnen einer *.pst Datei Windows XP Forum 24. Apr. 2013