Condividi:        

Come trasferire email da Outlook a Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Come trasferire email da Outlook a Excel

Postdi davide2574 » 11/12/15 08:28

Salve,

Ho provato a cercare qui ma non sono riuscito a trovare,perchè vorrei spostare gli email da leggere in Excel con le stringhe specifiche da estrarre in una cella.
E' possibile?
Grazie.
ciao

Davide
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Sponsor
 

Re: Come trasferire email da Outlook a Excel

Postdi Anthony47 » 12/12/15 02:52

Molte cose si possono fare, altre e' meglio lasciarle fare ad Outlook; dovresti spiegare quali parti delle mail vorresti copiare su Excel e con quali finalita', e quale versione di Outlook utilizzi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 13/12/15 18:08

Ecco

L'email che ricevo sempre questo ogni giorno circa 500 o piu.
Facsmile email in Outlook:

Hi Davide,

We found 7 matches for the B_Win_V13 filter you asked us to monitor, click here to check the full details

The top 5 results are shown below...
Time/Date Sport Details Bet Type Rating Bookmaker Back Odds Exchange Lay Odds
13/11/2014 17:15:00
Atl Madrid v Real Madrid Home Match Odds 99.29 William Hill 1.62 Betfair 1.6
15/11/2014 19:30:00
Villarreal v Ath Bilbao Draw Match Odds 99.12 BetVictor 4.33 Betfair 4.2
18/11/2014 17:00:00
Sint Truiden v Gent Away Match Odds 98.84 William Hill 1.8 Betfair 1.78
18/11/2014 16:30:00
Deportivo Quito v Erciyesspor Away Match Odds 98.06 William Hill 1.6 Betfair 1.6
19/11/2014 16:30:00
Adana Demirspor v Emelec Home Match Odds 98.06 William Hill 1.6 Betfair 1.6


Thanks for using OddsMonkey

OddsMonkey Alerts

http://www.oddsmonkey.com








Vedi che ho messo il grassetto che vorrei proprio estrarre in excel e divisi in ogni cella
Esempio
A1: 13/11/2014
A2: 15/11/2014

B1: Atl Madrid v Real Madrid
B2: Villarreal v Ath Bilbao

C1: Home
C2: Draw

D1: Match Odds
D2: Match Odds

E1: 99.29
E2: 99.12

F1: William Hill
F2: BetVictor

G1: 1.62
G2: 4.33

H1: Betfair
H2: Betfair

I1: 1.6
I2: 4.2

Ogni email che ricevo potrebbe risultare da 1 match ad oltre.

E' possibile estrarre i testi e si inserisce in excel? magari senza cancellare ma potrebbe registrare ogni nuovo email oppure già letto.
ecco l'origine dell'email:

Hi Davide,<br /><br />
We found 7 matches for the <b>B_BetforWin_V3</b> filter you asked us to monitor,
click <a href="http://mandrillapp.com/track/click/30048106/www.oddsmonkey.com?p=eyJzIjoiVnM2bXFkbHpKVFl4dEhFUHVSTkUyeVptbE1rIiwidiI6MSwicCI6IntcInVcIjozMDA0ODEwNixcInZcIjoxLFwidXJsXCI6XCJodHRwOlxcXC9cXFwvd3d3Lm9kZHNtb25rZXkuY29tXFxcL1ByZW1pdW1TZWFyY2guYXNweD9maWx0ZXI9Ql9CZXRmb3JXaW5fVjMmYm9va2llSWQ9LTFcIixcImlkXCI6XCJjZTcwM2FiODExZDU0ZTI3YjY0ODE1ODlmNzNiNzIxYlwiLFwidXJsX2lkc1wiOltcImYwMmNiMjYwYjEwZjczMTJlOGVhYjY1NTVhMDkwZmJjMDM0OWVhNWRcIl19In0" target="_blank">here</a> to check the full details
<br /><br />
The top 5 results are shown below...
<br /><br />
<table style='font: 12px/16px "segoe ui",arial,sans-serif;color:#4C607A'><tr><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Time/Date</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Sport</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Details</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Bet</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Type</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Rating</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Bookmaker</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Back Odds</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Exchange</b></td><td style="padding-left: 7px;padding-right: 7px;background: none repeat scroll 0 0 #F1F5FB;border-color: #F6F9FB #FFFFFF #C2CEDB #E1EAF3;border-style: solid;border-width: 0 1px 1px;"><b>Lay Odds</b></td></tr><tr><td style="padding-left: 7px;padding-right: 7px;">13/11/2014 17:15:00</td><td style="padding-left: 7px;padding-right: 7px;"><img src="http://www.oddsmonkey.com/DesktopModules/arbmonitor/images/sports/2.png" style="border-width:0px;"></td><td style="padding-left: 7px;padding-right: 7px;">Atl Madrid v Ath Bilbao</td><td style="padding-left: 7px;padding-right: 7px;">Home</td><td style="padding-left: 7px;padding-right: 7px;">Match Odds</td><td style="padding-left: 7px;padding-right: 7px;">99.29</td><td style="padding-left: 7px;padding-right: 7px;">William Hill</td><td style="padding-left: 7px;padding-right: 7px;">1.62</td><td style="padding-left: 7px;padding-right: 7px;">Betfair</td><td style="padding-left: 7px;padding-right: 7px;">1.6</td></tr><tr><td style="padding-left: 7px;padding-right: 7px;">15/11/2014 19:30:00</td><td style="padding-left: 7px;padding-right: 7px;"><img src="http://www.oddsmonkey.com/DesktopModules/arbmonitor/images/sports/2.png" style="border-width:0px;"></td><td style="padding-left: 7px;padding-right: 7px;">Villarreal v Real Madrid</td><td style="padding-left: 7px;padding-right: 7px;">Draw</td><td style="padding-left: 7px;padding-right: 7px;">Match Odds</td><td style="padding-left: 7px;padding-right: 7px;">99.12</td><td style="padding-left: 7px;padding-right: 7px;">BetVictor</td><td style="padding-left: 7px;padding-right: 7px;">4.33</td><td style="padding-left: 7px;padding-right: 7px;">Betfair</td><td style="padding-left: 7px;padding-right: 7px;">4.2</td></tr><tr><td style="padding-left: 7px;padding-right: 7px;">18/11/2014 17:00:00</td><td style="padding-left: 7px;padding-right: 7px;"><img src="http://www.oddsmonkey.com/DesktopModules/arbmonitor/images/sports/2.png" style="border-width:0px;"></td><td style="padding-left: 7px;padding-right: 7px;">Sint Truiden v Gent</td><td style="padding-left: 7px;padding-right: 7px;">Away</td><td style="padding-left: 7px;padding-right: 7px;">Match Odds</td><td style="padding-left: 7px;padding-right: 7px;">98.84</td><td style="padding-left: 7px;padding-right: 7px;">William Hill</td><td style="padding-left: 7px;padding-right: 7px;">1.8</td><td style="padding-left: 7px;padding-right: 7px;">Betfair</td><td style="padding-left: 7px;padding-right: 7px;">1.78</td></tr><tr><td style="padding-left: 7px;padding-right: 7px;">18/11/2014 16:30:00</td><td style="padding-left: 7px;padding-right: 7px;"><img src="http://www.oddsmonkey.com/DesktopModules/arbmonitor/images/sports/2.png" style="border-width:0px;"></td><td style="padding-left: 7px;padding-right: 7px;">Deportivo Quito v Emelec</td><td style="padding-left: 7px;padding-right: 7px;">Away</td><td style="padding-left: 7px;padding-right: 7px;">Match Odds</td><td style="padding-left: 7px;padding-right: 7px;">98.06</td><td style="padding-left: 7px;padding-right: 7px;">William Hill</td><td style="padding-left: 7px;padding-right: 7px;">1.6</td><td style="padding-left: 7px;padding-right: 7px;">Betfair</td><td style="padding-left: 7px;padding-right: 7px;">1.6</td></tr><tr><td style="padding-left: 7px;padding-right: 7px;">19/11/2014 16:30:00</td><td style="padding-left: 7px;padding-right: 7px;"><img src="http://www.oddsmonkey.com/DesktopModules/arbmonitor/images/sports/2.png" style="border-width:0px;"></td><td style="padding-left: 7px;padding-right: 7px;">Adana Demirspor v Erciyesspor</td><td style="padding-left: 7px;padding-right: 7px;">Home</td><td style="padding-left: 7px;padding-right: 7px;">Match Odds</td><td style="padding-left: 7px;padding-right: 7px;">98.06</td><td style="padding-left: 7px;padding-right: 7px;">William Hill</td><td style="padding-left: 7px;padding-right: 7px;">1.6</td><td style="padding-left: 7px;padding-right: 7px;">Betfair</td><td style="padding-left: 7px;padding-right: 7px;">1.6</td></tr></table>
<br /><br />
Thanks for using OddsMonkey
<br /><br />
OddsMonkey Alerts
<br />
<img src="http://oddsmonkey.com/Portals/0/webSiteLogo1.gif">
<br />
<a href="http://mandrillapp.com/track/click/30048106/oddsmonkey.com?p=eyJzIjoiQktBekJkNTlFUHJ5LXFqa09ZbExDQ0tkcWI0IiwidiI6MSwicCI6IntcInVcIjozMDA0ODEwNixcInZcIjoxLFwidXJsXCI6XCJodHRwOlxcXC9cXFwvb2Rkc21vbmtleS5jb21cXFwvUG9ydGFsc1xcXC8wXFxcL3dlYlNpdGVMb2dvMS5naWZcIixcImlkXCI6XCJjZTcwM2FiODExZDU0ZTI3YjY0ODE1ODlmNzNiNzIxYlwiLFwidXJsX2lkc1wiOltcImQ0YmIwYjI1NWM1MjgwZjdhMTIzYTNmYjVlN2U0ODJlZWZiYjc1ZTFcIl19In0" target="_blank">http://www.oddsmonkey.com</a>
<br />
<br />
<a href="http://mandrillapp.com/track/click/30048106/smarkets.com?p=eyJzIjoiUFZjQ2ZPTjZ1VHZDN2pJa0Z5RlRkSU13M3Q0IiwidiI6MSwicCI6IntcInVcIjozMDA0ODEwNixcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3NtYXJrZXRzLmNvbVxcXC8_c21hPTQ5XCIsXCJpZFwiOlwiY2U3MDNhYjgxMWQ1NGUyN2I2NDgxNTg5ZjczYjcyMWJcIixcInVybF9pZHNcIjpbXCJiNWI5YmY5NTZjZjRmZTE2MmNjMjIwYTQ0OTBhOWEyN2MyOGJjYmNjXCJdfSJ9"><img src="https://s3-eu-west-1.amazonaws.com/smrktscdn/banners/Banner%20Images/smarkets_468x60.gif" width="468" height="60"></a><img src="http://mandrillapp.com/track/open.php?u=30048106&id=ce703ab811d54e27b6481589f73b721b" height="1" width="1">

Ringrazio ancora.
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 18/12/15 19:58

Ciao Antohny

ho trovato questo in un sito:

andando su questa voce

Outlook Data ---> Excel

N° 47

Ho seguito le istruzioni e ho modificato il codice ma il problema non mi importa tutto completo con i msg da leggere e già letti.
Se ho 1500 email ma ricevo solo 800 non tutti.
E poi riesco estrarre i msg ma nel testo ci sono piu 3 diversi e come posso estrarre più importanti come ho indicato precedente in ogni riga compreso le date.

Il file MailMessagesToExcel.bas file ho inserito nel VBA di Outlook:

Codice: Seleziona tutto
Option Explicit

Private strTemplatesPath As String


Public Sub SaveMessagesToExcel()
'Created by Helen Feddema 5-Sep-2007
'Last modified 5-Sep-2007
'Demonstrates pushing mail message data to rows in an Excel worksheet

On Error GoTo ErrorHandler

   Dim appExcel As New Excel.Application
   Dim wkb As Excel.Workbook
   Dim wks As Excel.Worksheet
   Dim rng As Excel.Range
   Dim strSheet As String
   Dim i As Integer
   Dim j As Integer
   Dim lngCount As Long
   Dim msg As Outlook.MailItem
   Dim nms As Outlook.NameSpace
   Dim fld As Outlook.MAPIFolder
   'Must declare as Object because folders may contain different
   'types of items
   Dim itm As Object
   Dim strTitle As String
   Dim strPrompt As String

   strTemplatesPath = GetTemplatesPath
   strSheet = "Messages.xls"
   strSheet = strTemplatesPath & strSheet
   Debug.Print "Excel workbook: " & strSheet

   'Test for file in the Templates folder
   If TestFileExists(strSheet) = False Then
      strTitle = "Worksheet file not found"
      strPrompt = strSheet & _
         " not found; please copy Messages.xls to this folder and try again"
      MsgBox strPrompt, vbCritical + vbOKOnly, strTitle
      GoTo ErrorHandlerExit
   End If
   
   Set wkb = appExcel.Workbooks.Open(strSheet)
   Set wks = wkb.Sheets(1)
   wks.Activate
   appExcel.Application.Visible = True

   'Let user select a folder to export
   On Error Resume Next
   
SelectMailFolder:
      Set fld = nms.PickFolder
      Debug.Print "Folder item type: " & fld.DefaultItemType

      If fld Is Nothing Then
         GoTo ErrorHandlerExit
      ElseIf fld.DefaultItemType <> olMailItem Then
         strPrompt = "Please select a Mail folder"
         strTitle = "Folder error"
         MsgBox prompt:=strPrompt, _
            Buttons:=vbExclamation + vbOKOnly, _
            Title:=strTitle
         GoTo SelectMailFolder
      End If
   
On Error GoTo ErrorHandler
   
   lngCount = fld.Items.Count
   
   If lngCount = 0 Then
      MsgBox "No messages to export"
      GoTo ErrorHandlerExit
   Else
      Debug.Print lngCount & " messages to export"
   End If

   'Adjust i (row number) to be 1 less than the number of the first body row
   i = 3
   
  'Iterate through contact items in Contacts folder, and export a few fields
   'from each item to a row in the Contacts worksheet
   For Each itm In fld.Items
      If itm.Class = olMail Then
         'Process item only if it is a mail item
         Set msg = itm
         i = i + 1
         
         'j is the column number
         j = 1
     
         Set rng = wks.Cells(i, j)
         If msg.To <> "" Then rng.Value = msg.To
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.cc <> "" Then rng.Value = msg.cc
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.SenderEmailAddress <> "" Then rng.Value = msg.SenderEmailAddress
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.Subject <> "" Then rng.Value = msg.Subject
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         rng.Value = msg.SentOn
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         rng.Value = msg.ReceivedTime
         
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.Categories <> "" Then rng.Value = msg.Categories
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         On Error Resume Next
         'The next line illustrates the syntax for referencing
         'a custom Outlook field
         If msg.UserProperties("CustomField") <> "" Then
            rng.Value = msg.UserProperties("CustomField")
         End If
         j = j + 1
      End If
   Next itm

ErrorHandlerExit:
   Exit Sub

ErrorHandler:
   MsgBox "Error No: " & Err.Number _
      & " in SaveMessagesToExcel procedure; " _
      & "Description: " & Err.Description
   Resume ErrorHandlerExit

End Sub

Public Function TestFileExists(strFile As String) As Boolean
'Created by Helen Feddema 9-1-2004
'Last modified 9-1-2004
'Tests for existing of a file, using the FileSystemObject
   
   Dim fso As New Scripting.FileSystemObject
   Dim fil As Scripting.File
   
On Error Resume Next

   Set fil = fso.GetFile(strFile)
   If fil Is Nothing Then
      TestFileExists = False
   Else
      TestFileExists = True
   End If
   
End Function

Public Function GetTemplatesPath() As String
'Created by Helen Feddema 5-Sep-2007
'Last modified 5-Sep-2007
   
   Dim appWord As Word.Application
   Set appWord = GetObject(, "Word.Application")
   
   strTemplatesPath = _
      appWord.Options.DefaultFilePath(wdUserTemplatesPath) & "\"
   Debug.Print "Templates folder: " & strTemplatesPath
   GetTemplatesPath = strTemplatesPath
   
ErrorHandlerExit:
   Set appWord = Nothing
   Exit Function

ErrorHandler:
   If Err = 429 Then
      'Word is not running; open Word with CreateObject
      Set appWord = CreateObject("Word.Application")
      Resume Next
   Else
      MsgBox "Error No: " & Err.Number & "; Description: " _
         & Err.Description
      Resume ErrorHandlerExit
   End If

End Function


Mentre su Excel questo:

Codice: Seleziona tutto
Option Explicit

Private Sub Workbook_Open()
'Created by Helen Feddema 28-Oct-2010
'Last modified by Helen Feddema 29-Oct-2010

On Error GoTo ErrorHandler

   Dim appOutlook As Outlook.Application
   Dim nms As Outlook.Namespace
   Dim lngCount As Long
   Dim itm As Object
   Dim msg As Outlook.MailItem
   Dim i As Integer
   Dim fld As Outlook.MAPIFolder
   Dim rng As Excel.Range
   Dim j As Integer
   Dim wks As Excel.Worksheet
   Dim strPrompt As String
   Dim strTitle As String
   Dim intReturn As Integer
   Dim strPath As String
   Dim intPath As Integer
   Dim intExt As Integer
   Dim intLength As Integer
   Dim strBody As String
   Dim varResult As Variant
   
   strTitle = "Question"
   strPrompt = "Import mail messages?"
   intReturn = MsgBox(prompt:=strPrompt, _
      Buttons:=vbQuestion + vbYesNo, _
      Title:=strTitle)
   If intReturn = vbNo Then
      GoTo ErrorHandlerExit
   End If
 
   'Let user select a folder to import
   Set appOutlook = GetObject(, "Outlook.Application")
   Set nms = appOutlook.GetNamespace("MAPI")
   Set fld = nms.PickFolder
   If fld Is Nothing Then
      GoTo ErrorHandlerExit
   End If
   
   'Test whether selected folder contains mail messages
   If fld.DefaultItemType <> olMailItem Then
      MsgBox "Folder does not contain mail messages"
      GoTo ErrorHandlerExit
   End If
   
   lngCount = fld.Items.Count
   
   If lngCount = 0 Then
      MsgBox "No messages to import"
      GoTo ErrorHandlerExit
   Else
      Set wks = Application.ActiveSheet
      Debug.Print lngCount & " messages to import"
   End If

   'Adjust i (row number) to be 1 less than the number of the first body row
   i = 3
   
  'Iterate through items in selected folder, and import a few fields
   'from each item to a row in the worksheet
   For Each itm In fld.Items
      If itm.Class = olMail Then
         'Process item only if it is a mail item
         Set msg = itm
         i = i + 1
         
         'j is the column number
         j = 1
     
         Set rng = wks.Cells(i, j)
         If msg.To <> "" Then rng.Value = msg.To
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.cc <> "" Then rng.Value = msg.cc
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.SenderEmailAddress <> "" Then rng.Value = msg.SenderEmailAddress
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.Subject <> "" Then rng.Value = msg.Subject
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         rng.Value = msg.SentOn
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         rng.Value = msg.ReceivedTime
         
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         If msg.Body <> "" Then
            strBody = msg.Body
            rng.Value = strBody
         End If
         
         j = j + 1
         
         Set rng = wks.Cells(i, j)
         varResult = InStr(strBody, "[b].png[/b]")
         
         If IsNull(varResult) = False And varResult > 0 Then
            intPath = CInt(varResult)
         End If
         
         varResult = InStr(strBody, "[b]Thanks[/b]")
         
         If IsNull(varResult) = False And varResult > 0 Then
            intExt = CInt(varResult)
            intLength = intExt - intPath [b]+ 10[/b]
            strPath = Mid(strBody, intPath, intLength)
            Debug.Print "Path string: " & strPath
         Else
            strPath = ""
         End If
         
         If strPath <> "" Then
            Set rng = wks.Cells(i, j)
            rng.Value = strPath
         End If
         j = j + 1
      End If
   Next itm

ErrorHandlerExit:
   Exit Sub

ErrorHandler:
   'Outlook is not running; open Outlook with CreateObject
   If Err.Number = 429 Then
      Set appOutlook = CreateObject("Outlook.Application")
      Resume Next
   Else
      MsgBox "Error No: " & Err.Number _
         & " in Workbook_Open procedure; " _
         & "Description: " & Err.Description
      Resume ErrorHandlerExit
   End If
   
End Sub


Se ho esagerato ad inserire questi lunghi codici, mi fai sapere così provvederò a cancellare.
Grazie.
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Re: Come trasferire email da Outlook a Excel

Postdi Anthony47 » 19/12/15 21:28

Spero che la macro che hai allegato faccia piu' che importare tabelle in excel...
La mia interpretazione di quanto hai richiesto e' la seguente macro:
Codice: Seleziona tutto
Sub GetOlTables()
'Importa su un nuovo file Excel le tabelle contenute nella mail selezionata
'il file non viene salvato e rimane apert all'interno di Excel per le successive fasi
'
Dim myMail As MailItem, myHTM As HTMLDocument, myEx As Object
Dim myWB As Object
'
Set myHTM = New MSHTML.HTMLDocument
Set myMail = GetItem
myHTM.Body.innerHTML = myMail.HTMLBody
'
On Error Resume Next
Set myEx = GetObject(, "Excel.Application")
On Error GoTo 0
If myEx Is Nothing Then Set myEx = CreateObject("Excel.Application")
myEx.Visible = True
'myEx.workbooks.Add                                 '***Crea nuovo Workbook
myEx.Workbooks.Open "C:\Users\UTENTE1\Documents\PEPPA.xls"    '***<<<OPPURE, lavora su uno esistente
myEx.Sheets("Foglio2").Select
myEx.Range("A:H").ClearContents
myEx.Range("A:H").NumberFormat = "@"
'
Set mycoll = myHTM.getElementsByTagName("TABLE")
For Each myItm In mycoll
    For Each trtr In myItm.Rows
        For Each tdtd In trtr.Cells
            myEx.Cells(I + 1, J + 1) = tdtd.innerText
            J = J + 1
        Next tdtd
        I = I + 1: J = 0
    Next trtr
    I = I + 1
Next myItm
myEx.Range("A:H").WrapText = False
'
Set myMail = Nothing
Set myHTM = Nothing
'
End Sub

 
Function GetItem() As Object
'crea riferimento a mail "corrente", che sia selezionata o aperta
    Dim OlApp As Outlook.Application
'
    Set OlApp = CreateObject("Outlook.Application")
    On Error Resume Next
    Select Case TypeName(OlApp.ActiveWindow)
        Case "Explorer"
            Set GetItem = OlApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetItem = OlApp.ActiveInspector.CurrentItem
        Case Else
            'Qui non dovrebbe finirci...
    End Select
 
    Set OlApp = Nothing
End Function

Il codice va messo in un Modulo standard del vba-project di Outlook; semre nel vba di Outlook va impostato un riferimento alla libreria "Microsoft HTML Object lirary": Menu /Strumenti /Riferimenti; scorri l'elenco, spunta la libreria suddetta, Ok.
Quindi va selezionata oppure aperta una mail e lanciata la Sub GetOlTables.

Ricordati, quando chiuderai Outlook, di Salvare il Progetto vba (verra' fatta esplicita domanda se salvare oppure no).

Il codice va personalizzato nella riga marcata ***<<< e riga successiva , col nome del file su cui va fatta l'importazione e relativo Foglio; in alternativa si puo' imporatre le tabelle su un nuovo Workbook. Questa alternativa viene gestita abilitando /disabilitando le istruzioni marcate ***.
Valgono tutte le cose dette sull'importazione da sito web, in particolare per la formattazione di tipo Testo e per il fatto che l'area destinata all'importazione delle tabelle (che ho arbitrariamente assunto siano le colonne A:H) verra' AZZERATA senza preavviso dalla macro.
La macro importa le tabelle sul foglio Excel; le informazioni che servono vanno estratte da questo foglio utilizzando "tecniche Excel convenzionali", cioe' formule o macro aggiuntive.

Quando pubblichi del codice ricordati di inserirle tra i "tag" CODE: selezioni tutto il codice, premi il pulsante Code che trovi in testa al textbox in cui scrivi i tuoi messaggi.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 20/12/15 21:51

Ciao Anthony

Sei un genio, sono rimasto senza parole per la tua bravura.
Ti faccio i miei complimenti.
Senti se io ho 800 email , come posso importare tutti gli email invece una mail che mi hai detto da selezionare o aperta?
Nell'Outlook ci sono email già letti e da leggere. Vorrei sapere se è possibile importare tutti entrambi?
E come si può modificare le impostazioni da estrarre il testo? Che vorrei capire e come si usa ad estrarre tutto che hai fatto, perchè così potrei utilizzare anche nel futuro per altri diversi email.
perchè nell'ultima colonna mi da la data invece la quota come potrai vedere che ho segnato in grassetto:
Un esempio email che ricevo:

Email
20/12/2015 19:30:00
Malaga v Atl Madrid Draw Match Odds 97.79 Paddy Power 3.5 Betfair 3.45
20/12/2015 19:30:00
Malaga v Atl Madrid Away Match Odds 97.50 BetVictor 1.95 Betfair 1.95



In excel ricevo cosi:

Time/Date Sport Details Bet Type Rating Bookmaker Back Odds Exchange Lay Odds
20/12/2015 19:30:00 Malaga v Atl Madrid Draw Match Odds 97.79 Paddy Power 3.5 Betfair 10:48
20/12/2015 19:30:00 Malaga v Atl Madrid Away Match Odds 97.50 BetVictor 1.95 Betfair 1,95


Sarei molto felice se si può impostare anche ad importare gli email già letti e da leggere nel foglio.
Grazie ancora.
Ti invidio tanto. Spero che un giorno ci riuscirò pure io ad imparare il vba.
Ciao

davide
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 23/12/15 23:00

ho provato a cercare di capire e a cercare nel google per la possibilità di esportare tutti gli email in excel che hai messo i codici ma non ci sono riuscito.
Ho provato pure a selezionare più messaggi ma niente da fare. sempre mi da un solo email.
E anche quelle ultime colonne che davano le date. Ho messo in formato generale e testo e rimane sempre quelle date. :cry:
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Re: Come trasferire email da Outlook a Excel

Postdi Anthony47 » 27/12/15 13:01

Lavorando con Outlook bisogna innanzitutto stabilire un collegamento con una mail, che puo' essere quella visualizzata nell'ActiveInspector o quella selezionata nell'ActiveExplorer.
Bisogna poi usare le proprieta' dell'oggetto mailItem per prelevare quel che serve; nel nostro caso avevamo prelevato tutto l'HtmlBody, nel codice che segue preleveremo anche ReceivedTime e Subject.
L'HtmlBody, salvato come documento tipo HTMLDocument potra' essere elaborato come avevamo gia' fatto col sorgente del sito web.

Venendo all'esigenza di importare tabelle da una miriade di mail, il mio suggerimento e' questo:
-sposti tutte le mail di cui ti interessa importare le tabelle in un unico folder di Outlook; potrai spostare le mail manualmente (le selezioni sull' InputBox e le trascini nell'altro folder), oppure puoi creare una "regola" in Outlook che fa lo spostamento per te, inserendo all'interno delle Regola i criteri per identificare le mail.
-poi usi il seguente codice, da inserire in un nuovo "Modulo" del vba di Outlook (la riga Dim myEx etc etc deve risultare in testa a tutto):
Codice: Seleziona tutto
Dim myEx As Object, myI As Long, myJ As Long, myMail As MailItem

Sub ScanM()
Dim toTale As Long, I As Long
'
toTale = Application.ActiveExplorer.CurrentFolder.Items.Count
myI = 0: myJ = 0
'
On Error Resume Next
    Set myEx = GetObject(, "Excel.Application")
On Error GoTo 0
If myEx Is Nothing Then Set myEx = CreateObject("Excel.Application")
myEx.Visible = True
'myEx.workbooks.Add                                 '***Crea nuovo Workbook
myEx.Workbooks.Open "C:\Users\UTENTE1\Documents\PEPPA.xls"    '***<<<OPPURE, lavora su uno esistente
myEx.Sheets("Foglio2").Select
myEx.Range("A:H").ClearContents
myEx.Range("A:H").NumberFormat = "@"
'
'Scan delle mail:
For I = 1 To toTale
    Set myMail = Application.ActiveExplorer.CurrentFolder.Items.Item(I)
    Call GetAllTables(0)
Next I
myEx.Range("A:H").WrapText = False
'
End Sub

 
Sub GetAllTables(byVal Dummy)
'Importa su un nuovo file Excel le tabelle contenute nella mail selezionata
'il file non viene salvato e rimane apert all'interno di Excel per le successive fasi
'
Dim myHTM As HTMLDocument
Dim myWB As Object
'
Set myHTM = New MSHTML.HTMLDocument
''Set myMail = GetItem      'ora e' in ScanM
myHTM.Body.innerHTML = myMail.HTMLBody
'
'Rimosso blocco per apertura Applicazione File Excel (-->in ScanM)
'
'Aggiunte next 2:
myEx.cells(myI + 1, 1) = ">>>>>>>>>> " & myMail.ReceivedTime: myEx.cells(myI + 1, 2) = myMail.Subject
myI = myI + 1

Set mycoll = myHTM.getElementsByTagName("TABLE")
For Each myItm In mycoll
    For Each trtr In myItm.Rows
        For Each tdtd In trtr.cells
            myEx.cells(myI + 1, myJ + 1) = tdtd.innerText
            myJ = myJ + 1
        Next tdtd
        myI = myI + 1: myJ = 0
    Next trtr
    myI = myI + 1
Next myItm
myEx.Range("A:H").WrapText = False
'
Set myMail = Nothing
Set myHTM = Nothing
'
End Sub
La macro che ci interessa e' Sub ScanM, da lanciare dopo aver selezionato il folder con le mail interessate.
La macro apre il file Excel indicato nell'istruzione marcata ***<<< e seleziona il foglio indicato nell'istruzione successiva; il foglio verra' AZZERATO senza preavviso limitatamente alle colonne A:H, che saranno formattate in modalita' testo; quindi si procedera' a importare su questo foglio le tabelle provenienti dalle mail.
Di ogni mail si importa innanzitutto la data di spedizione (colonna A) e il Subject (colonna B), poi tutte le tabelle cosi' come risultano nel sorgente delle mail.
A conclusione del lavoro il file Excel rimane aperto e non salvato, per consentire all'utente le ulteriori operazioni che si desidera eseguire.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 28/12/15 23:46

Antonhy non ho parole. Ti ringrazio moltissimo. Funziona benissimo.
Ho provato a manipolare per capire meglio le parole e con i numeri.
Se invece voglio trasferire i contenuti solo come questi:

20/12/2015 19:30:00 Malaga v Atl Madrid Draw Match Odds 97.79 Paddy Power 3.5 Betfair 10:48
20/12/2015 19:30:00 Malaga v Atl Madrid Away Match Odds 97.50 BetVictor 1.95 Betfair 1,95

senza copiare questi

Time/Date Sport Details Bet Type Rating Bookmaker Back Odds Exchange Lay Odds?

è possibile fare? ho provato a modificare i parametri dei numei ma mi rendo conto sono gli spostamenti nelle posizioni di celle dei contenuti del testo di email.
Come si può a capire queste parole:

Dim myMail As MailItem, myHTM As HTMLDocument, myEx As Object
Dim myWB As Object

esistono una guida che si spiega come funzionano e a come collegare ?
Grazie ancora per il tuo aiuto e tanta pazienza.
Ciao

Davide
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42

Re: Come trasferire email da Outlook a Excel

Postdi Anthony47 » 31/12/15 19:08

L'argomento di questa discussione e' come scaricare dati tabellari presenti in email.
Se ora vuoi eliminare dal "tutto" alcune righe lo potrai fare con macro "tradizionali" che lavorano solo sul modello di oggetti Excel.
Tipo una macro che scorre dall'ultima riga alla prima e se la riga corrente rispecchia uno schema da te definito (es Time/Date in A, Sport in B, Details in C, Bet Type in D etc; ma non serve esaminare tutte le colonne per essere ragionevolmente certo che la riga e' da eliminare) allora la riga viene cancellata.

Quanto al significato delle istruzioni tipo Dim myMail As MailItem, esse contengono (in questo esempio) la dichiarazione (Dim) di una variabile arbitrariamente denominata myMail il cui "data type" e' MailItem (un tipo dati gestibile tramite le istruzioni vba del modello di oggetti Outlook).
Se visiti una libreria ben dotata (non solo Feltrinelli o Mondadori), certamente trovi qualche testo che descrive il linguaggio vba per Excel; sono piu' rari i testi che riguardano il vba degli altri applicativi, es Word o Outlook.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come trasferire email da Outlook a Excel

Postdi davide2574 » 04/01/16 12:59

Prima di tutto , ringrazio molto ad Antonhy. Buon Anno Nuovo.
Alla fine ho lasciato così come è.
Perché ho trovato manualmente con cancella righe vuote e con un trova sul foglio e cosi elimina tutte quindi un sistema più semplice.
Mentre scarica gli email sono perfetti.
davide2574
Utente Junior
 
Post: 46
Iscritto il: 15/11/15 16:42


Torna a Applicazioni Office Windows


Topic correlati a "Come trasferire email da Outlook a Excel":

Password Imap (email)
Autore: lukarello7
Forum: Discussioni
Risposte: 8

Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti