tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Zvoni
  • 1 Beitrag von Zvoni
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
860
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von _opiWahn_
    _opiWahn_ _opiWahn_ ist offline Mitglied Bronze
    Registriert seit
    Jan 2011
    Ort
    zw. KL und MA
    Beiträge
    39
    Hallo,

    via Outlook möchte ich Mails mit mehreren Anhängen an zwei unterschiedliche Adressen senden. Das Senden mit je einer datei funktioniert auch recht gut - nur Wildcards scheinen wohl nicht zu funktionieren. Wie bekomme ich das hin?
    Aus dem was ich mir bislang zusammen gegooglet habe bin ich schlau geworden und das ich nicht der Experte bin sieht man sicherlich am Code:

    PHP-Code:
    Const olByValue 1
    Const olMailItem 0

    Dim oOApp 
    Dim oOMail
    Dim oOApp2 
    Dim oOMail2

    Set oFSO 
    CreateObject("Scripting.FileSystemObject")    

    Set oOApp CreateObject("Outlook.Application")
    Set oOMail oOApp.CreateItem(olMailItem)

    Set oOApp2 CreateObject("Outlook.Application")
    Set oOMail2 oOApp.CreateItem(olMailItem)

    With oOMail
        
    .To "amb@xxx.de"
        
    .Subject "Abgeschlossene Aufträge mB"
        
    .Body "Anbei die abgeschlossenen und unterschriebenen Aufträge (mit Beanstandungen)"
        
    .Attachments.Add "C:\Auftraege\X_*.pdf"olByValue1
        
    .Send
    End With

    with oOMail2
        
    .To "aob@xxx.de"
        
    .Subject "Abgeschlossene Aufträge oB"
        
    .Body "Anbei die abgeschlossenen und unterschriebenen Aufträge (ohne Beanstandungen)"
        
    .Attachments.Add "c:\Auftraege\*.pdf"olByValue1
        
    .Send
    End With 
    Ich vermute mal, daß ich mit dem FileSystemObject mit die Dateien aus dem Ordener holen muß. Hierzu hätte ich evtl. auch ein Beispiel - leider weiß ich aber nicht wie ich das ganze dann dem Attachments.Add übergeben soll.
    Ein vielversprechendes Beispiel (VBA) sieht so aus:

    PHP-Code:
        Dim sPath As String 
        Dim sFile 
    As String 
        Dim sAttachments 
    As String 
        
        sPath 
    "Z:\Kunden\Kunde1\" 
        sFile = Dir(sPath & "
    1-2-*.pdf") 
        Do While sFile > vbNullString 
            sAttachments = "
    ," & Chr(34) & sPath & sFile & Chr(34) 
            sFile = Dir 
        Loop 
        If Len(sAttachments) > 0 Then sAttachments = Mid$(sAttachments, 2) 
    Hier laufe ich jedoch ein DIR rein, was VBS wohl so nicht kennt

    Im Anschluss sollen dann alle Dateien in einen Extraordner z.B. c:\gesendet verschoben werden. Aber das ist, glaub ich, ein anderes Thema
    Geändert von _opiWahn_ (06.01.12 um 16:39 Uhr)
     

  2. #2
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    Guggst du hier:

    http://www.source-code.biz/snippets/vbscript/1.htm

    Was du effektiv brauchst ist dann am Ende sowas in der Art wie:
    Code vb:
    1
    2
    3
    4
    5
    
    sFile = Dir(sPath & "1-2-3 *.pdf")
    Do While sFile > vbNullString 
            .Attachments.Add sFile, olByValue, 1
            sFile = Dir 
        Loop

    nur halt anstatt dem DIR eben das aus der Beispielseite oben.
    Musst ein wenig basteln
    _opiWahn_ bedankt sich. 
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  3. #3
    Avatar von _opiWahn_
    _opiWahn_ _opiWahn_ ist offline Mitglied Bronze
    Registriert seit
    Jan 2011
    Ort
    zw. KL und MA
    Beiträge
    39
    Bin schon im Ansatz etwas weiter gekommen und versuche es nun so:
    PHP-Code:
    Const olByValue 1
    Const olMailItem 0

    Dim oOApp 
    Dim oOMail
    Dim oFolder
    Dim oFile
    Dim ixm
    Dim ixo
    Dim mbeanst
    (2)
    Dim obeanst(2)

    Set oFSO CreateObject("Scripting.FileSystemObject")    
    set oFolder oFSO.GetFolder ("C:\Roiger\Auftraege\Unterschrieben")
    Set oOApp CreateObject("Outlook.Application")
    Set oOMail oOApp.CreateItem(olMailItem)

    ixm 0
    ixo 
    0

    For Each oFile In oFolder.Files
      
    If Left(oFile.Name,1) = "X_" Then
        msgbox ixm 
    " " oFile.Name
        mbeanst
    (ixm) = oFile.Name
       
    elseif Left(oFile.Name,1) <> "X_" Then
        msgbox ixo 
    " " oFile.Name
        obeanst
    (ixo) = oFile.Name
      End 
    If
          
    ixm ixm 1
        ixo 
    ixo 1    
    Next

    msgbox mbeanst
    (0)
    msgbox obeanst(0)

    With oOMail
        
    .To "amb@xxx.de"
        
    .Subject "Abgeschlossene Aufträge mB"
        
    .Body "Anbei die abgeschlossenen und unterschriebenen Aufträge (mit Beanstandungen)"
        
    For 0 to ixm
        
    .Attachments.Add ofolder "\" & mbeanst(i), olByValue, 1
        next
        .Send
    End With 
    Die Idee ist das Verzeichnis zu durchlaufen, die passenden Dateien heraus zu filtern und in ein jeweiliges Array zu schreiben.
    Beim Senden der Mail soll dann das Array wieder ausgelesen werden.
    Die Ausgabe in die MsgBox (zur Kontrolle) läuft wie gewünscht, aber das füllen des Arrays nicht!
    Nach dem ersten Durchgang für <> X_ (3 Dateien) wird ixo auf 3 gesetzt und mit X_ (ebenfalls 3 Dateien)
    weitergemacht - aber nur die erste Datei.
    Danach folgt ein Fehler in Zeile 27 "Index außerhalb des gültigen Bereichs".
    Ich habe die beiden Arrays erstmal statisch gesetzt (zum Testen). Die sollen später dynamisch sein.
    Allerdings einfach leer lassen z.B. Dim name() scheint wohl nicht zu gehen?
     

  4. #4
    Avatar von _opiWahn_
    _opiWahn_ _opiWahn_ ist offline Mitglied Bronze
    Registriert seit
    Jan 2011
    Ort
    zw. KL und MA
    Beiträge
    39
    Hab mein Fehler gefunden
    So funktioniert's jetzt ... für alle die was ähnliches haben.
    Was noch fehlt ist das dynamische Array! Hat jemand einen Tipp?
    Ansonsten gehts bestimmt eleganter - aber es geht
    PHP-Code:
    Const olByValue 1
    Const olMailItem 0

    Dim oOApp 
    Dim oOMail
    Dim oOMail2
    Dim oFolder
    Dim oFile
    Dim ixm
    Dim ixo
    Dim mbeanst
    (3)
    Dim obeanst(3)

    Set oFSO CreateObject("Scripting.FileSystemObject")    
    set oFolder oFSO.GetFolder ("C:\Roiger\Auftraege\Unterschrieben")
    Set oOApp CreateObject("Outlook.Application")
    Set oOMail oOApp.CreateItem(olMailItem)
    Set oOMail2 oOApp.CreateItem(olMailItem)

    ixm 0
    ixo 
    0

    For Each oFile In oFolder.Files
      
    If Left(oFile.Name,2) <> "X_" Then
        obeanst
    (ixo) = oFile.Name
        ixo 
    ixo 1
       
    else
        
    mbeanst(ixm) = oFile.Name
        ixm 
    ixm 1    
      End 
    If    
    Next

    With oOMail
        
    .To "xyz@abc.de"
        
    .Subject "Abgeschlossene Aufträge oB"
        
    .Body "Anbei die abgeschlossenen und unterschriebenen Aufträge (ohne Beanstandungen)"
        
    For 0 to 2
        
    .Attachments.Add ofolder "\" & obeanst(i), olByValue, 1
        next
        .Send
    End With

    With oOMail2
        .To = "
    abc@xyz.de"
        .Subject = "
    Abgeschlossene Aufträge mB"
        .Body = "
    Anbei die abgeschlossenen und unterschriebenen Aufträge (mit Beanstandungen)"
        For j = 0 to 2
        .Attachments.Add ofolder & "
    \" & mbeanst(j), olByValue, 1
        next
        .Send
    End With 
     

  5. #5
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    Dynamische Arrays deklarierst du unter VB normalerweise so:

    Code vb:
    1
    2
    3
    4
    5
    
    Dim MyArray() as String   'Oder welcher Datentyp auch immer
     
    'Später im Code musst du dann die tatsächlichen Grenzen zuweisen
    'Preserve dient dazu, in einem Array bereits enthaltene Daten zu behalten. Ohne Preserve wird das Array komplett leer gemacht.
    Redim Preserve MyArray(1 to 10)

    Ich weiss allerdings nicht, ob das auch mit VBS geht, dafür mache ich zuwenig VBS
    _opiWahn_ bedankt sich. 
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

Ähnliche Themen

  1. Outlook -> Wortfilter beim Mail senden?
    Von Hawkster im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 20.03.10, 17:31
  2. Antworten: 4
    Letzter Beitrag: 27.09.07, 13:48
  3. email mit mehreren anhängen
    Von LiThiUm-FX im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.01.06, 02:36
  4. outlook signatur anhängen
    Von ziriander im Forum Office-Anwendungen
    Antworten: 7
    Letzter Beitrag: 20.11.04, 13:41
  5. E-MAil senden, ohne Outlook
    Von freakchannel im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 11.02.02, 21:56