Domanda Recuperare indirizzi da file .pst con macro vba EXCEL

MInoGilberti

Nuovo utente
27 Agosto 2020
16
1
69
2019
0
Buongiorno, avrei la necessità di recuperare gli indirizzi di chi mi ha scritto o a cui ho scritto dai vari file .pst in modo da poter ricreare ( in Excel) una rubrica completa dei miei contatti. Vorrei fare il tutto tramite una macro VBA Excel. Non ho trovato nulla di simile. Potete indirizzarmi a qualche esempio del genere ? (lettura dei file .pst).
Grazie
Mino Gilberti
 

Terix81

Utente abituale
13 Aprile 2020
459
30
Benevento
Excel 2016
26
Ciao , i file pst se non erro sono generati da outlook e tramite lo stesso provare ad esportarli in csv( leggibili tranquillamente in excel) o utilizzare qualche tool gratuito per farlo.
Una volta convertiti , in base al formato di output si può impostare una macro che ti estrae le informazioni e te le inserisca in campi precisi tipo : nome, cognome , email , telefono ec...
 

MInoGilberti

Nuovo utente
27 Agosto 2020
16
1
69
2019
0
grazie terix81 della risposta.
Il fatto è che ho parecchi file .pst e sarebbe molto lungo fare il tutto manualmente. Per questo motivo cercavo la strada di una macro che facesse tale lavoro.
 

giulianovac

Access/VBA Expert
Staff
9 Giugno 2018
4.860
145
Italy
2019
376
VBA Excel. Non ho trovato nulla di simile. Potete indirizzarmi a qualche esempio del genere ? (lettura dei file .pst).
 

MInoGilberti

Nuovo utente
27 Agosto 2020
16
1
69
2019
0
mi spiace, ma non riesco a testare la sub suggerita. Va in errore già sulle dichiarative Dim e non sono in grado di dire il perchè.
 

rollis13

VBA Expert
Expert
15 Novembre 2015
2.537
115
Cordenons
Office 2016 x32
203
Un saluto a tutti Saluto_saluto.
Come attività propedeutica devi attivare il riferimento a 'Microsoft Outlook 1x.0 Object Library' (dal menu vba / Strumenti / Riferimenti) poi probabilmente dovrai modificare un paio di righe per fare un passetto avanti, queste, così:
Visual Basic:
[...]
    Dim olApp  As Object                            '<= nuova
    Set olApp = CreateObject("Outlook.Application") '<= nuova
    Set olNS = olApp.GetNamespace("MAPI")           '<= cambiata
[...]
 

MInoGilberti

Nuovo utente
27 Agosto 2020
16
1
69
2019
0
Grazie Rollis13, sei stato illuminante. Un passettino l'ho fatto ed ora riesco a recuperare gli indirizzi ( ed i nomi) dei mittenti per un archivio. Si tratta di rendere ciclico su tutti gli archivi presenti la lettura. Ma questa è un'altra storia, già affrontata è più semplice. Grazie ancora Mino
 

MInoGilberti

Nuovo utente
27 Agosto 2020
16
1
69
2019
0
Ciao.
Sono ancora qui a rompere le scatole.
Grazie al vostro aiuto riesco a leggere le informazioni dai file .pst . In particolare estraggo l'indirizzo ed il nome di chi mi ha scritto, ma..... se il file .pst è organizzato in sotto cartelle npn riesco ad accedere a queste e mi limito a leggere quanto contenuto nella cartella "posta in arrivo". Dove diavolo è l'informazione che la cartella ha delle sottocartelle ?
nel codice sottostante c'è

olFolder.Folders("Posta in arrivo").Items

ho provato a "scavare" col debug ma non trovo l'informazione sul nome delle cartelle figlie di "posta in arrivo"
allego ( e spero di averlo fatto nel modo corretto) la sub incriminata.


Visual Basic:
Sub LEGGI_CONTENUTO_PST()
    Dim elenco(99) As String
    Dim olApp  As Object
    Set olApp = CreateObject("Outlook.Application")
    Set olNS = olApp.GetNamespace("MAPI")           
  
    Dim olItems As Outlook.Items
    Dim olItem As Outlook.MailItem
    Dim olFolder As Outlook.MAPIFolder
    Dim vFold As Variant
    Worksheets("elenco").Select
    K = 2
    j = 1
    nomefile = Cells(K, 1)
    Do While nomefile > " "
        If Cells(K, 2) = "ok" _
        Then
            elenco(j) = nomefile
            j = j + 1
         End If
         K = K + 1
         nomefile = Cells(K, 1)
    Loop
    indirizzo = "D:\posta\"
    j = 1
    K = 1
    Worksheets("INDIRIZZI").Select
    For j = 1 To 2
    
        With olNS
            'Open the PST file
            '.AddStore "D:\My Documents\Test\Temp\Personal Folders.pst"
            .AddStore indirizzo & elenco(j)
            Set olFolder = .Folders.GetLast
            'Rename the folder
            olFolder.Name = "TemporFAIL"
            Set vFold = olFolder
            'get the Inbox folder of the added file
            Set olItems = olFolder.Folders("Posta in arrivo").Items
            'K = 1
                For Each olItem In olItems
             ' campi che mi interessa rilevare     
                    Cells(K + 1, 1) = olItem.Sender
                    Cells(K + 1, 2) = olItem.SenderEmailAddress
                    Cells(K + 1, 3) = olItem.ReceivedTime
                    Cells(K + 1, 4) = olItem.ReceivedByName
                    Cells(K + 1, 5) = elenco(j)
                    K = K + 1
                Next olItem
            'close the added folder
            .RemoveStore vFold
            a = b
        End With
        j = j + 1
    Next
    'clear variables
    Set olNS = Nothing
    Set olItems = Nothing
    Set olItem = Nothing
    Set olFolder = Nothing
    Set vFold = Nothing
End Sub
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!