Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19922 > unrolled thread

Export mail outlook in Excel

Started byMarco75 <marcoporzi75@gmail.com>
First post2021-09-29 07:29 -0700
Last post2021-09-30 01:47 -0700
Articles 6 — 2 participants

Back to article view | Back to it.comp.lang.visual-basic


Contents

  Export mail outlook in Excel Marco75 <marcoporzi75@gmail.com> - 2021-09-29 07:29 -0700
    Re: Export mail outlook in Excel Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2021-09-29 21:06 +0200
      Re: Export mail outlook in Excel Marco75 <marcoporzi75@gmail.com> - 2021-09-29 12:58 -0700
        Re: Export mail outlook in Excel Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2021-09-29 22:45 +0200
          Re: Export mail outlook in Excel Marco75 <marcoporzi75@gmail.com> - 2021-09-29 23:44 -0700
            Re: Export mail outlook in Excel Marco75 <marcoporzi75@gmail.com> - 2021-09-30 01:47 -0700

#19922 — Export mail outlook in Excel

FromMarco75 <marcoporzi75@gmail.com>
Date2021-09-29 07:29 -0700
SubjectExport mail outlook in Excel
Message-ID<e97f08f8-2399-4c0f-8a09-3928750e171dn@googlegroups.com>
Ciao,
come da oggetto, ho la necessità di esportare le mail di una cartella di Outlook in Excel.
il seguente codice apre Excel ed inserisce le mail e tutto funziona bene ma dovrei modificarlo per ottenere di più:

- Filtrare in modo che esporti solo le mail da leggere ed esportare solo quelle
- Filtrare parte dell'oggetto mail (es.: "Esito non conforme" senza ciò che viene dopo). Questa parte è opzionale perchè se esporto già quelle non lette potrebbe non servire in quanto le non lette sono già quelle che voglio però può essere utile
- Questa la ciliegina sulla torta: prendere dal corpo mail solo alcune righe e posizionarle ognuna in una colonna Excel

questo il codice che ho messo in Outlook 

grazie
Marco


Sub Export_KO()
    
    ufAttendi.Show vbModeless
    
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    
    Dim i As Long 'Ricerca righe
    Dim arrHeader As Variant
    
    Dim olNS As NameSpace
    Dim olInboxFolfer As MAPIFolder
    Dim olItems As Items
    Dim olMailItem As MailItem
    
    arrHeader = Array("Data", "Oggetto", "Non letto")
    
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    Set xlWb = xlApp.Workbooks.Add
    
    Set olNS = GetNamespace("MAPI")
    Set olInboxFolfer = olNS.GetDefaultFolder(olFolderInbox).Folders("Notifiche")
    Set olItems = olInboxFolfer.Items
    
    i = 2
    
    On Error Resume Next
    
    xlWb.Worksheets(1).Range("A1").Resize(1, UBound(arrHeader) + 1).Value = arrHeader
    
    For Each olMailItem In olItems
    
        xlWb.Worksheets(1).Cells(i, "A").Value = olItems(i).CreationTime
        xlWb.Worksheets(1).Cells(i, "B").Value = olItems(i).SenderName
        xlWb.Worksheets(1).Cells(i, "C").Value = olItems(i).Subject
        xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead
    
    i = i + 1
    
    Next olMailItem
    
    xlWb.Worksheets(1).Cells.EntireColumn.AutoFit
    
    
     MsgBox ("Fatto!")
    
    
    Set xlWb = Nothing
    Set xlApp = Nothing
    
    Set olItems = Nothing
    Set olInboxFolfer = Nothing
    Set olNS = Nothing

Unload ufAttendi

End Sub

[toc] | [next] | [standalone]


#19923

FromFranz_aRTiglio <franzgol@N0SPAMtin.it>
Date2021-09-29 21:06 +0200
Message-ID<sj2d7c$dho$1@gioia.aioe.org>
In reply to#19922
Marco75 ci ha detto :

> non lette potrebbe non servire in quanto le non lette sono già quelle che 
> voglio  

così a braccio:



> xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead


unread significa "non lette", quindi eviterei gli altri selettori e
partirei da qui....

[toc] | [prev] | [next] | [standalone]


#19924

FromMarco75 <marcoporzi75@gmail.com>
Date2021-09-29 12:58 -0700
Message-ID<2224b654-fa93-4b22-a9f1-3e2dfd950362n@googlegroups.com>
In reply to#19923
Il giorno mercoledì 29 settembre 2021 alle 21:02:06 UTC+2 Franz_aRTiglio ha scritto:
> Marco75 ci ha detto :
> > non lette potrebbe non servire in quanto le non lette sono già quelle che 
> > voglio
> così a braccio:
> > xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead
> unread significa "non lette", quindi eviterei gli altri selettori e 
> partirei da qui....

Ciao,
UnRead significa non lette ok, ma non voglio mettere lo stato di mail letta o non letta in Excel, vorrei che prendesse solo le mail non lette ed esportasse solo quelle. 

Ho messo xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead solo per poter filtrare in Excel le non lette visto che ora non ho altro modo. 

Al momento mi esporta circa 30.000 mail che non mi servono, quelle da leggere sono 20 o 30 quindi sarebbe più rapido se filtrasse prima di metterle in Excel

[toc] | [prev] | [next] | [standalone]


#19925

FromFranz_aRTiglio <franzgol@N0SPAMtin.it>
Date2021-09-29 22:45 +0200
Message-ID<sj2j0b$18p7$1@gioia.aioe.org>
In reply to#19924
Dopo dura riflessione, Marco75 ha scritto :
> Il giorno mercoledì 29 settembre 2021 alle 21:02:06 UTC+2 Franz_aRTiglio ha 
> scritto:
>> Marco75 ci ha detto :
>>> non lette potrebbe non servire in quanto le non lette sono già quelle che 
>>> voglio
>> così a braccio:
>>> xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead
>> unread significa "non lette", quindi eviterei gli altri selettori e 
>> partirei da qui....
>
> Ciao,
> UnRead significa non lette ok, ma non voglio mettere lo stato di mail letta o 
> non letta in Excel, vorrei che prendesse solo le mail non lette ed esportasse 
> solo quelle. 

sempre a braccio....

if olItems(i).UnRead = true then

[toc] | [prev] | [next] | [standalone]


#19926

FromMarco75 <marcoporzi75@gmail.com>
Date2021-09-29 23:44 -0700
Message-ID<44c056cf-6d21-4057-8ac8-0d2d0f60a467n@googlegroups.com>
In reply to#19925
Il giorno mercoledì 29 settembre 2021 alle 22:40:46 UTC+2 Franz_aRTiglio ha scritto:
> Dopo dura riflessione, Marco75 ha scritto :
> > Il giorno mercoledì 29 settembre 2021 alle 21:02:06 UTC+2 Franz_aRTiglio ha 
> > scritto: 
> >> Marco75 ci ha detto : 
> >>> non lette potrebbe non servire in quanto le non lette sono già quelle che 
> >>> voglio 
> >> così a braccio: 
> >>> xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead 
> >> unread significa "non lette", quindi eviterei gli altri selettori e 
> >> partirei da qui.... 
> > 
> > Ciao, 
> > UnRead significa non lette ok, ma non voglio mettere lo stato di mail letta o 
> > non letta in Excel, vorrei che prendesse solo le mail non lette ed esportasse 
> > solo quelle.
> sempre a braccio.... 
> 
> if olItems(i).UnRead = true then

ho provato ad inserire il comando If ma non fa più nulla!
l'ho messo sia prima che dopo la parte For Each ma non cambia niente!

Marco

[toc] | [prev] | [next] | [standalone]


#19928

FromMarco75 <marcoporzi75@gmail.com>
Date2021-09-30 01:47 -0700
Message-ID<04495728-c063-4310-a78e-d1e290f10ff5n@googlegroups.com>
In reply to#19926
Il giorno giovedì 30 settembre 2021 alle 08:44:58 UTC+2 Marco75 ha scritto:
> Il giorno mercoledì 29 settembre 2021 alle 22:40:46 UTC+2 Franz_aRTiglio ha scritto: 
> > Dopo dura riflessione, Marco75 ha scritto : 
> > > Il giorno mercoledì 29 settembre 2021 alle 21:02:06 UTC+2 Franz_aRTiglio ha 
> > > scritto: 
> > >> Marco75 ci ha detto : 
> > >>> non lette potrebbe non servire in quanto le non lette sono già quelle che 
> > >>> voglio 
> > >> così a braccio: 
> > >>> xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead 
> > >> unread significa "non lette", quindi eviterei gli altri selettori e 
> > >> partirei da qui.... 
> > > 
> > > Ciao, 
> > > UnRead significa non lette ok, ma non voglio mettere lo stato di mail letta o 
> > > non letta in Excel, vorrei che prendesse solo le mail non lette ed esportasse 
> > > solo quelle. 
> > sempre a braccio.... 
> > 
> > if olItems(i).UnRead = true then
> ho provato ad inserire il comando If ma non fa più nulla! 
> l'ho messo sia prima che dopo la parte For Each ma non cambia niente! 
> 
> Marco
credo di aver risolto partendo da if olItems(i).UnRead = true then come consigliato...
l'unica cosa che non mi metteva l'intestazione ma la faccio creare dopo l'estrazione inserendo una riga in A1

sFilter = "[UnRead] = true" '<<<<<<<<<<<<
    
    
    Set olNS = GetNamespace("MAPI")
    'Set olInboxFolfer = olNS.GetDefaultFolder(olFolderInbox).Folders("Notifiche QDA")
    Set olInboxFolfer = olNS.GetDefaultFolder(olFolderInbox).Folders("Buste paga CUD e fatture")
    'Set olItems = olInboxFolfer.Items
    Set olItems = olInboxFolfer.Items.Restrict(sFilter) '<<<<<<<
    
   i = 1
    
    On Error Resume Next
  
    For Each olMailItem In olItems

        xlWb.Worksheets(1).Cells(i, "A").Value = olItems(i).ReceivedTime
        xlWb.Worksheets(1).Cells(i, "B").Value = olItems(i).SenderName
        xlWb.Worksheets(1).Cells(i, "C").Value = olItems(i).Subject
        xlWb.Worksheets(1).Cells(i, "D").Value = olItems(i).UnRead
    
    i = i + 1

    Next olMailItem
    
    xlWb.Worksheets(1).Range("A1").Select
    xlWb.Worksheets(1).Range("A1").EntireRow.Insert
    xlWb.Worksheets(1).Range("A1").Resize(1, UBound(arrHeader) + 1).Value = arrHeader

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.visual-basic


csiph-web