Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    residenza
    Roma
    Messaggi
    26

    VBA: Scarico allegati da Outlook cartelle in Archivio

    Salve.
    Innanzitutto OS=Windows xp Professional; MSOffice 2003.

    Ho creato un'applicazione in MSAccess 2003 che scarica gli allegati da Outlook 2003.
    L'applicazione scarica ovviamente gli allegati delle lettere presenti nella cartella "Posta in Arrivo" delle "Cartelle Personali".

    Mi è stato chiesto di scaricare anche gli allegati nella cartella "Posta in Arrivo" delle "Cartelle in Archivio".

    Non riesco a dirigere l'applicazione verso quest'ultima cartella perché tra i vari membri della classe globale della libreria di Outlook non ho trovato nulla che differenzi la "Posta in Arrivo" in cartelle personali o archivio

    Allego il codice che regolarmente uso.
    codice:
    Function GetAttachments()
    On Error GoTo GetAttachments_err
    
        Dim strExtension1 As String
        Dim strExtension2 As String
        Dim ns As NameSpace
        Dim Inbox As MAPIFolder
        Dim w As Outlook.Folders
        Dim Item As Outlook.MailItem
        Dim Atmt As Outlook.Attachment
        Dim FileName As String
        Dim intI As Integer
        Dim Outlook As Object
        Dim strPath As String
        Dim x As String
        
        
        Set Outlook = CreateObject("Outlook.Application")
        strExtension1 = ".rtf"
        strExtension2 = ".doc"
        
        Set ns = Outlook.GetNamespace("MAPI")
        Set Inbox = ns.GetDefaultFolder(olFolderInbox)
    
        
        MsgBox Inbox.folderPath
        If Inbox.Items.Count = 0 Then
            MsgBox "There are no messages in the Inbox.", vbInformation + vbOKOnly, "TOOL"
            Exit Function
        End If
        
        
       For Each Item In Inbox.Items
    
            If Item.SentOn > "01.01.2011 00:00:00" And Item.Attachments.Count > 0 Then
            For Each Atmt In Item.Attachments
                  If Right(Atmt.FileName, 4) = strExtension1 Or Right(Atmt.FileName, 4) = strExtension2 Then
                    FileName = "C:\Temp\" & Atmt.FileName
                    Atmt.SaveAsFile FileName
                    intI = intI + 1
                End If
            Next Atmt
            End If
        Next
        If intI > 0 Then
            MsgBox "I found " & intI & " attached files.", vbInformation + vbOKOnly, "Finished!"
         Else
            MsgBox "I didn't find any attached files in your mail.", vbInformation + vbOKOnly, "Finished!"
        End If
        
    GetAttachments_exit:
           Set Atmt = Nothing
           Set Item = Nothing
           Set ns = Nothing
           Exit Function
    
    GetAttachments_err:
           If Err.Number = 13 Then Resume
           MsgBox "An unexpected error has occurred." _
              & vbCrLf & "Please note and report the following information." _
              & vbCrLf & "Macro Name: GetAttachments" _
              & vbCrLf & "Error Number: " & Err.Number _
              & vbCrLf & "Error Description: " & Err.Description _
              , vbCritical, "Error!"
           Resume GetAttachments_exit
    
    End Function
    Sigma Beta

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Devi usare lla collection Folders per recuperare quella che serve a te.

    Come indicato sulla guida:
    http://msdn.microsoft.com/en-us/library/aa210918(v=office.11).aspx


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    residenza
    Roma
    Messaggi
    26
    Grazie per la risposta gibra.
    Ho consultato la guida ma non credo sia ciò di cui ho bisogno.

    Se ho interpretato bene in quell'esempio si tratta di una sottocartella di una "MAPIfolder".

    Io invece devo scaricare dalla MAPIfolder olFolderInbox che anziché avere il percorso "\\Cartelle personali\Posta in arrivo" ha "\\Cartelle archivio\Posta in arrivo".

    Ho idea che dovrei definire il percorso prima di definire la olFolderInbox ma non ho idea di come fare.

    Hai qualche idea?
    Sigma Beta

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    L'articolo era solo per fare un esempio di ciò che parlavo,
    ma la collection è sempre Folders (e non può essere altrimenti).

    E' ovvio che devi crearti il codice per leggere i nomi delle cartelle...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    residenza
    Roma
    Messaggi
    26
    Grazie ancore gibra.
    Ho risolto cosìriporto solo ciò che ho variato)

    codice:
        Dim Inbox as MAPIfolder
        Dim Inbox2 as MAPIfolder
    
        Set ns = Outlook.GetNamespace("MAPI")
        Set Inbox = ns.Folders.Item("Cartelle archivio")
        Set Inbox2 = Inbox.Folders.Item("Posta in arrivo")
    Quindi il percorso risulta "\\Cartelle archivio\Posta in arrivo"
    Prima non riuscivo perché credevo si potessero usare solo le costanti tipo olFolderInbox
    Sigma Beta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.