Hallo zusammen.
Ich habe auf der Arbeit ein kleines Problem. Unsere Lieferanten stellen nach und nach auf elektronischen Rechnungsversand (als PDF) bei uns um. Ich habe jetzt auch schon einen Rechner zusammengezimmert der die eMails (Outlook 2003 / WinXP) empfängt, die Anhänge per VB-Script auf Festplatte speichert (C:\Temp) und alle 10 Minuten läuft eine Batch-Datei die die Rechnungen mit einem aktuellen Eingangsstempel versieht und es dann an den Drucker schickt.
Da dieses Script alle 10 Minuten läuft werden natürlich erstmal alle Anhänge von Mails die in diesem zeitfenster eintrudeln auf Platte zwischengespeichert. Dummerweise haben wir Lieferanten die das Attachment immer gleich nennen. Aktuell hier: Rechnung.pdf
Da haben wir 8 Mails auf einmal bekommen. Jetzt hat er natürlich 8 mal unter dem gleichen Namen das Attachment gespeichert. Somit 7 mal die Datei überschrieben, sodass die 10-Minuten-Batch nur eine Datei zum ausdrucken hat. Die anderen 7 sind futsch.
Jetzt meine Frage. Unter Unix ist es ja ein einfaches z.b. die uhrzeit (inklusive Sekunden) und Datum in einen Dateinamen autom. zu schreiben (z.B. 250612_092155_Rechnung.pdf). Aber wie sieht das unter VB aus? Das hier ist der Code. Was muss ich einfügen um ihn dazu zu bewegen die uhrzeit mit sekundenangaben mit in den Dateinamen zu packen? Dann wäre jeder Dateiname einzigartig und die Gefahr das die Datei immer überschrieben wird ist gebannt. Am besten noch eine Pause von 5 Sekunden im Script damit auf keinen Fall 2 Dateien in der selben Sekunde geschrieben werden können.
Public Sub Save_It(oMail As Outlook.MailItem)
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
' Prüfe, ob der Ordner bereits existiert
strNewFolder = "C:\Temp\"
' Target --> Posteingang
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder( olFolderInbox)
' Wenn neue Mails ankommen, dann enthaltene Anlagen in strNewFolder speichern
For Each objNewMail In objPosteingang.Items
With objNewMail
If .UnRead = True Then
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
.Attachments.Item(i).SaveAsFile strNewFolder & "\" & .Attachments.Item(i).FileName
Next i
End If
End If
End With
Next objNewMail
End Sub
|