Outlook Anhänge speichern

Home-›Foren-›Outlook-›Outlook VBA-›Outlook Anhänge speichern

4 Antworten anzeigen - 1 bis 4 (von insgesamt 4)
  • Autor
    Beitrag
  • #33409
    fsinger
    Teilnehmer

      Hallo liebes Team,

      da ich leider nur grundlegende Ahnung von VB habe und ich zwar selber auch kleine Skripte schreiben kann, hätte ich zu diesem Skript eine Frage:

      [code]
      Private Sub Application_NewMail()
      Dim Ordnername As String
      Dim objPosteingang As MAPIFolder
      Dim objNewMail As MailItem
      On Error Resume Next
      Set objPosteingang = Application.GetNamespace(\”MAPI\”).GetDefaultFolder(olFolderInbox)
      For Each objNewMail In objPosteingang.Items
      With objNewMail
      If .UnRead = True Then
      Anzahl = .Attachments.Count
      If Anzahl > 0 Then
      Ordnername = \”C:\\temp\” & objNewMail.SenderName
      MkDir Ordnername
      For i = 1 To Anzahl
      .Attachments.Item(i).SaveAsFile Ordnername & \”\” & .Attachments.Item(i).FileName
      Next i
      End If
      End If
      End With
      Next objNewMail
      End Sub
      [/code]

      Wie schaffe ich es, dass die Anhänge nur in einem Ordner abgespeichert werden bzw. wie muss ich das anpassen. Habe schon versucht eine Zeile vor der Schleife einzufügen, die einen festen Ordnernamen vorgibt, aber leider ohne Erfolg.

      Dann hätte ich noch eine spezielle Frage.

      Ich bekomme immer dieselben Anhänge, die auf dem Server gespeichert werden sollen.
      Diese heissen pririons.dat, wshsende.dat und n71kovvg* ( hier ändert sich immer die laufende Nr am Ende, was ja kein Problem sein sollte nur auf diesen String zu gehen).

      Wie schaffe ich es jetzt, dass ich nur auf diese Anhänge abfrage, wenn diese eingehen und die dann in ein bestimmtes Verzeichnis landen?

      Wäre sehr dankbar für Eure Hilfe!!

      Danke

      Frank Singer

      #121097
      JohannK
      Teilnehmer

        > Wie schaffe ich es, dass die Anhänge nur in einem Ordner abgespeichert werden

        Ordnername = \”C:\\temp\” ( OHNE: & objNewMail.SenderName )

        > pririons.dat, wshsende.dat und n71kovvg*

        Dann müsste Dein Code ungefähr so aussehen:

        Private Sub Application_NewMail()
        Dim Ordnername As String
        Dim objPosteingang As MAPIFolder
        Dim objNewMail As MailItem
        Dim WS1 as string \’ Hilfsstring
        On Error Resume Next
        Set objPosteingang =
        Application.GetNamespace(\”MAPI\”).GetDefaultFolder(olFolderInbox)
        For Each objNewMail In objPosteingang.Items
        With objNewMail
        If .UnRead = True Then
        Anzahl = .Attachments.Count
        If Anzahl > 0 Then
        Ordnername = \”C:\\temp\” \’ Standardmäßig in diesen Ordner ablegen
        MkDir Ordnername
        For i = 1 To Anzahl
        WS1 = lcase$(.Attachments.Item(i).FileName) \’ Filename in Kleinschreibung
        if WS1 = \”pririons.dat\” _
        or WS1 = \”wshsende.dat\” _
        or left$(ws1,8) = \”n71kovvb\” then \’ Wenn ein Sonderfile
        Ordnername = \”C:\\Sonderfiles\” \’ Anderen Ziel-Ordner zuweisen
        endif
        .Attachments.Item(i).SaveAsFile Ordnername & \”\” & .Attachments.Item(i).FileName
        Next i
        End If
        End If
        End With
        Next objNewMail
        End Sub

        Liebe Grüße aus Wien
        Johann

        #121218
        Unbekannt
        Teilnehmer

          Lieber Johann,

          erstmal vielen Dank für Deine Hilfe, aber eine Sache klappt irgendwie immer noch nicht richtig.
          Hier mein angepasster Code:

          [code]
          Private Sub Application_NewMail()
          Dim Ordnername As String
          Dim objPosteingang As MAPIFolder
          Dim objNewMail As MailItem
          Dim WS1 As String
          On Error Resume Next
          Set objPosteingang = Application.GetNamespace(\”MAPI\”).GetDefaultFolder(olFolderInbox)
          For Each objNewMail In objPosteingang.Items
          With objNewMail
          If .UnRead = True Then
          Anzahl = .Attachments.Count
          If Anzahl > 0 Then
          Ordnername = \”C:\\temp\”
          MkDir Ordnername
          For i = 1 To Anzahl
          WS1 = LCase$(.Attachments.Item(i).FileName)
          If WS1 = \”pririons.dat\” _
          Or WS1 = \”wshsende.dat\” _
          Or Left$(WS1, 8) = \”n71kovvg\” Then
          Ordnername = \”F:\\LDATEN\\LIEFERN\\Wiegedaten\”
          End If
          .Attachments.Item(i).SaveAsFile Ordnername & \”\” & .Attachments.Item(i).FileName
          Next i
          End If
          End If
          End With
          Next objNewMail
          End Sub
          [/code]

          1.
          Jetzt macht das Skript folgendes, dass es mir zwar die Sachen richtig rauszieht, aber speichert mir das nicht in den Unterordner \”Wiegedaten\”, sondern immer in den übergeordneten Ordner \”LIEFERN\”. Woran kann das liegen? Habe den Ordner \”Wiegedaten\” angelegt und sehe jetzt leider nicht das Problem.

          2.
          Außerdem speichert mir das Skript die Dateien folgendermaßen ab: WiegedatenN71KOVVG.053
          Ich will aber nur den reinen Filenamen sprich N71KOVVG.053
          Wie bekomme ich das hin?

          Vielen Dank nochmals für Deine sehr kompetente Hilfe!!!

          Wäre nett, wenn Du Zeit hast Dir das mal anzuschauen, weil ich bald mit dem Thema ausflippe…

          VIELEN DANK

          LIEBE GRÜSSE AUS NÜRNBERG

          Frank

          #121582
          JohannK
          Teilnehmer

            Hallo!
            Ich schätze kleine Ursache große Wirkung:
            Es fehlt der Backslash, der den Ordnername vom Filenamen trennt:

            .Attachments.Item(i).SaveAsFile Ordnername & \”\\\” & .Attachments.Item(i).FileName

            LG
            Johann

            Liebe Grüße aus Wien
            Johann

          4 Antworten anzeigen - 1 bis 4 (von insgesamt 4)

          Das Thema ‘Outlook Anhänge speichern’ ist für neue Antworten geschlossen.

          -