Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #19922 > unrolled thread
| Started by | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| First post | 2021-09-29 07:29 -0700 |
| Last post | 2021-09-30 01:47 -0700 |
| Articles | 6 — 2 participants |
Back to article view | Back to it.comp.lang.visual-basic
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
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-09-29 07:29 -0700 |
| Subject | Export 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]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2021-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]
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-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]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2021-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]
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-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]
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-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