Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anhänge aus Oulook speichern mit VBA macht Probleme
#1
Guten Morgen,

Ich habe die Aufgabe bekommen ein Skript zu erstellen dass Anhänge aus einem Postfach in Outlook in einen Ordner kopiert und diese einen neuen Namen gibt. Welchen Namen die Datei bekommt wäre nicht wichtig, es muss nur ein neuer Name vergeben werden da die Datei die per Mail kommt immer den gleichen Namen hat. Ein funktionierendes Skript dass die Anhänge speichert habe ich schon, nur wenn ich versuche dass nur .pdf dateien geladen werden sollen funktioniert es nicht mehr. Oder anderesherum, ich habe mit viel Googeln und rumprobieren ein Skript dass nur .pdf Dateien lädt, aber der Name wird nicht wie gewünscht geändert.

Hier das Skript dass alle Anhänge holt und den namen anpasst:

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

    Dim objAtt As Outlook.Attachment

    Dim saveFolder As String

        saveFolder = "C:\Users\USER\Documents\Anhange\"

    Dim dateFormat As String

        dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd Hmm ")

    For Each objAtt In itm.Attachments

        objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName

    Next

End Sub

Und hier welches nur .pdf holt.

Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt  As Attachment
Dim sFile As String, P As Integer
Set mAtts = myItem.Attachments
While mAtts.Count > 0
  Set mAtt = mAtts(1)
  sFile = mAtt.DisplayName
  If sFile Like "*.pdf" Then
      P = InStrRev(sFile, ".")
      mAtt.SaveAsFile "C:\Users\USER\Documents\Anhange\" & Format$(Date, "yyyymmdd hhmmss") & mAtts.Count & sFile
  ElseIf sFile Like "Auswertung*" Then
  End If
  mAtts.Remove 1
Wend
End Sub



Es wird zwar auch ein neuer Name erzeugt, aber nur mit dem aktuellen Datum, nicht z.B. dem Eingangsdatum der Mail.



Wisst ihr wie das erste Skript dazu bekomme einfach nur .pdf Dateien zu sichern und dann das Eingangsdatum als Name der Datei anzugeben?

Es gibt dann noch das Problem dass das Skript dann zwar bei mir in einer Regel funktioniert, aber nicht beim User der es nutzen müsste, aber das könnte ich hinbekommen.

Habt ihr einen Tip?


Danke Smile
Zitieren
#2
Hallo,

ungetestet, versuche mal statt Format$(Date, "yyyymmdd hhmmss") dann Format$(myItem.ReceivedTime, "yyyymmdd hhmmss")

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
Könnt so einfach sein... Danke, hat funktioniert. Meistens, wenn ich irgendwas geändert habe hat das Skript einfach garnichts mehr gemacht und ich war schon am verzweifeln... jetzt gehts. Wenn ich es jetzt noch beim User zum laufen bekomm bin ich glücklich. danke Smile

!EDIT!: Es klappt beim User im normalen Postfach, nicht allerdings in der Gruppenmailbox. Wir bekommen von unserem Kunden Rechnungen in eine Gruppenpostfach und da müsste das Skript funktionieren, es passiert aber nichts. keine .pdf wird gespeichert. Ist die Mail allerdings im Postfach vom User selbst klappt es ohne Probleme. Dazu noch eine Idee? Big Grin
Zitieren
#4
Hallo,

Outlook VBA ist nicht meine Welt. Du müsstest aber in Deinem Code einen Aufbau einer Session zu Outlook haben.
Dort müstse man auf die entsprechende Objekte zugreifen können. Beispielhaft hier.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#5
Hallo,

Ich habe es jetzt damit gelöst über eine Regel alle Mails ins Postfach zu kopieren und da dann das Skript auszuführen. Leider nimmt das Skript nicht alle Mails mit, sonder nur ca. 70%. Der rest wird nicht exportiert.

Naja, zumindest gehts weiter.
Grüße
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions