Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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
VBA in Outlook
12.04.2017 10:46:39
Steffen
Hallo zusammen,
Benötige mal eine großen Gedankenanstoß.
Irgendwas mache ich bei mir im IF-Befehl falsch.
Folgenden Code habe ich:
Public Sub vba_test(olMail As MailItem)
Dim Ziel As String
Dim Ziel_2 As String
Dim Datei As String
Dim Anlage As Attachments
Dim i As Integer, j As Integer
Dim sDatei As String
Dim zDatei As String
Dim FB(8) As String
Dim FB_Ziel(8) As String
'### Suchbegriffe ###
FB(1) = "DN T"
FB(2) = "DNT"
FB(3) = "EHS"
FB(4) = "EB"
'### Ziel ORT ###
FB_Ziel(1) = "P:\Tagesbedarf\2017\03\DNT\"
FB_Ziel(2) = "P:\Tagesbedarf\2017\03\DNT\"
FB_Ziel(3) = "P:\Tagesbedarf\2017\03\EHS\"
FB_Ziel(4) = "P:\Tagesbedarf\2017\03\EB\"
'### Zentraler Speicherort###
FB_Ziel(0) = "P:\Tagesbedarf\2017\03\Zentral\"
Set Anlage = olMail.Attachments
For i = 1 To Anlage.Count
Datei = Anlage.Item(i).FileName
For j = 1 To UBound(FB)
If InStr(1, Datei, FB(j), vbTextCompare) > 0 Then
Ziel_2 = FB_Ziel(0)
'Ziel = FB_Ziel(j)
'If Dir(Ziel, vbDirectory) = "" Then Exit Sub
'zDatei = Ziel & Anlage.Item(i).FileName
'sDatei = Ziel & Datei
'If Dir(sDatei)  "" Then Kill (sDatei)
'Anlage.Item(i).SaveAsFile zDatei
If Dir(Ziel_2, vbDirectory) = "" Then Exit Sub
zDatei = Ziel_2 & Anlage.Item(i).FileName
sDatei = Ziel_2 & Datei
If Dir(sDatei)  "" Then Kill (sDatei)
Anlage.Item(i).SaveAsFile zDatei
End If
Next j
Next i
End Sub
Mein Problem ist das alle Dateien in Ordner "Ziel_2" gespeichert werden, es scheint so als wenn den InStr gar keine Funktion hat.
Aktiviere ich aber "Ziel" wieder werden die Dateien einmal in die richtige Ordner gespeichert, "Ziel_2" enthält trotzdem wieder alle Dateien also funktioniert der InStr "halb"?!?!.
Was mache ich falsch?
Vielen Dank schonmal für die Antworten

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA in Outlook
12.04.2017 12:25:24
Steffen
Problem ist gelöst.
Das Array muss komplett gefällt sein sonst prüft der InStr gegen eine leeren String und speichert hier immer die Datei ab.
Endlösung sieht so aus:
Public Sub vba_test(olMail As MailItem)
Dim Ziel As String
Dim Ziel_2 As String
Dim Datei As String
Dim Anlage As Attachments
Dim i As Integer, j As Integer, k As Integer
Dim sDatei As String
Dim zDatei As String
Dim Pfad As String
Dim FB() As String
Dim FB_Ziel() As String
'### Anzahl Suchbegriffe ###
k = 4
ReDim FB(k)
ReDim FB_Ziel(k)
'### Suchbegriffe ###
FB(1) = "DN T"
FB(2) = "DNT"
FB(3) = "EHS"
FB(4) = "EB"
'### Ziel ORT ###
FB_Ziel(1) = "P:\Tagesbedarf\2017\03\DNT\"
FB_Ziel(2) = "P:\Tagesbedarf\2017\03\DNT\"
FB_Ziel(3) = "P:\Tagesbedarf\2017\03\EHS\"
FB_Ziel(4) = "P:\Tagesbedarf\2017\03\EB\"
'### Zentraler Speicherort###
FB_Ziel(0) = ""
Set Anlage = olMail.Attachments
For i = 1 To Anlage.Count
Datei = Anlage.Item(i).FileName
For j = 1 To UBound(FB)
If InStr(1, Datei, FB(j), vbTextCompare) > 0 Then
Ziel = FB_Ziel(j)
Ziel_2 = FB_Ziel(0)
sDatei = Ziel & Datei
If Dir(Ziel)  "" Then
Else
MsgBox "Ordner " & Ziel & " nicht vorhanden"
Exit Sub
End If
If Dir(sDatei)  "" Then Kill (sDatei)
Anlage.Item(i).SaveAsFile sDatei
If Ziel_2 = "" Then
Else
zDatei = Ziel_2 & Datei
If Dir(Ziel_2)  "" Then
Else
MsgBox "Ordner " & Ziel_2 & " nicht vorhanden"
Exit Sub
End If
If Dir(zDatei)  "" Then Kill (zDatei)
Anlage.Item(i).SaveAsFile zDatei
End If
Else
End If
Next j
Next i
End Sub

Anzeige
AW: VBA in Outlook
12.04.2017 14:23:19
Luschi
Hallo Steffen,
beim Löschen von Dateien per Vba sollte man so vorgehen:

If Dir(zDatei)  "" Then
Kill zDatei
DoEvents
Do While Dir(zDatei)  ""
Loop
End If
Beesonders dann, wenn die Dateien auf 1en Netzlaufwerk liegen. Das Löschen wird nicht von Excel sondern vom Betriebssystem des Rechners/Servers durchgeführt und die Vba-Befehle dazu haben eine sehr niedrige Level-ID, so daß es schon zur verzögerten Ausführung kommen kann.
Gruß von Luschi
aus klein-Paris
AW: VBA in Outlook
12.04.2017 14:27:26
Steffen
Verstehe ich das dann richtig, dass gewartet wird bis die Datei weg(gelöscht) ist?
Wird sonst überschrieben?
Anzeige
AW: VBA in Outlook
12.04.2017 14:57:27
Luschi
Hallo Steffen,
im Prinzip hast Du das richtig verstanden, aber es handelt sich ja hier nur um Millisekunden und weniger und nicht um Minuten oder mehr. Ein Überschreiben/Ersetzen der alten vorhandenen Datei gibt es in dem Sinne nicht.
Alles das, was Excel an Fremdprogramme delegiert, sollte per Vollzugsmeldung nachgeprüft werden und erst dann die neue Datei mit dem gleichen Dateinamen in selben Pfad erstellt werden.
Es ist einfach nur eine Vorsichtsmaßnahme, die nicht weh tut, aber für Klarheit sorgt.
Gruß von Luschi
aus klein-Paris
AW: VBA in Outlook
12.04.2017 15:09:44
Steffen
Sehr Viele Danke!
Habe es direkt eingebaut.
Anzeige

108 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige