Outlook mails exporteren naar Excel

Status
Niet open voor verdere reacties.

LauravT

Gebruiker
Lid geworden
14 jun 2012
Berichten
156
Hallo,..

Ik ben op zoek naar een code om mails door te zetten naar een specifiek Excel bestand.
Helaas heb ik tot dusver nog niet iets nuttigs kunnen realiseren,.. :(!

Het betreft mails vanuit verschillende mappen, deze dienen ook op verschillende sheets te komen staan.
Dus mails uit map 1 dienen op sheet 1 te komen staan, etc..

Daarnaast dienen alleen de mails doorgezet te worden waar in de onderwerpregel bellen staat!

Zou iemand mij op de goede weg kunnen helpen?!
 
Je vraag is niet heel erg duidelijk; 'mails doorzetten naar Excel'? Wat bedoel je daarmee?
 
Niet dat ik je kan helpen, maar ik lees je vraag op deze manier:
Je wilt de tekst (incl. opmaak) van mails uit bepaalde mailmappen in Outlook in Excel in hun eigen sheets (1 per mailmap) laten citeren/plakken, en dan alleen voor mails waar in het onderwerp "bellen" voorkomt.

Bevestigen van (of aanpassingen doen aan) mijn lezing van je vraag in je volgende posting.

Tijs.
 
Laatst bewerkt:
Excuses,..

Mbt mails doel ik op het doorzetten van:
- onderwerpregel
- datum
 
Dus je vraag lijkt te zijn:
Je wilt de onderwerpregel en ontvangstdatum van mails uit bepaalde mailmappen vanuit Outlook in een Excel-bestand in hun eigen sheet/werkblad (1 per mailmap) laten citeren/plakken (1 kolom voor onderwerpegel, 1 kolom voor ontvangstdaum), en dat dan alleen voor mails waar in het onderwerp "bellen" voorkomt.

Zoals gezegd kan ik je hier niet mee helpen, maar hopelijk maakt het anderen makkelijker met mijn lezing van je vraag om je een antwoord te geven.

Tijs.
 
Ik heb inmiddels (eindelijk gelukt) een stukje code die het voor 1 specifieke map doet, echter zonder de voorwaarde dat er bellen in het onderwerpregel moet staan:

Code:
Sub TBVA()

'index 
Dim Folder As Outlook.MAPIFolder
Dim sFolders As Outlook.MAPIFolder
Dim iRow As Integer, oRow As Integer

Dim MailBoxName As String
Dim Pst_Folder_Name  As String
Dim Subfolder As String
Dim SubsFolder As String
        
Dim objExcel As New Excel.Application
Dim ExcelWB As Excel.Workbook
Dim sht As Excel.Worksheet
            
    'Mailadres (naam zoals weergegeven in Excel)
    MailBoxName = "Laura"
    'Mailbox binnen mailadres
    Pst_Folder_Name = "Inbox"
    'Submailbox
    Subfolder = "Werk"
    'Subsubmailbox 
    SubsFolder = "afgerond"
    'De route naar de juiste map
    Set Folder = Outlook.Session.Folders(MailBoxName).Folders(Pst_Folder_Name).Folders(Subfolder).Folders(SubsFolder)    

'excel openen
Set ExcelWB = objExcel.Workbooks.Open("\\map1.xlsx")
    
'Kopjes toevoegen aan Excel
ExcelWB.Sheets(1).Cells(1, 1) = "Subject"
ExcelWB.Sheets(1).Cells(1, 2) = "Date"
    
'Export gegevens naarExcel
oRow = 1
For iRow = 1 To Folder.Items.Count
	'Als onderwerpregel bellen bevat
        'If VBA.Subject = "Bellen" Then
           oRow = oRow + 1
           ExcelWB.Sheets(1).Cells(oRow, 1).Select
           ExcelWB.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).Subject
           ExcelWB.Sheets(1).Cells(oRow, 2) = Folder.Items.Item(iRow).ReceivedTime
        'End If
Next iRow

'Bevestiging
MsgBox "Mails doorgezet naar Excel"
Set Folder = Nothing
Set sFolders = Nothing
    
End_Lbl1:

End Sub

Heb even de specifieke locatie weggelaten (ivm privacy)!
 
Met controle op bellen in het onderwerp:
Code:
For iRow = 1 To Folder.Items.Count
    'Als onderwerpregel bellen bevat
    If InStr(1, Folder.Items.Item(iRow).Subject, "bellen") > 0 Then
        oRow = oRow + 1
        ExcelWB.Sheets(1).Cells(oRow, 1).Select
        ExcelWB.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).Subject
        ExcelWB.Sheets(1).Cells(oRow, 2) = Folder.Items.Item(iRow).ReceivedTime
    End If
Next iRow
 
Probleem zit blijkbaar in:
Code:
If VBA.Subject = "Bellen" Then

Om te beginnen: De variabele VBA is nergens gedeclareerd, en houdt bovendien geen rekening met waar je bent in het doorlopen van de mails.

Probeer het eens zo:
(bij de declaraties)
Code:
Dim oMail As Outlook.MailItem
en dan verderop de hele For lus vervangen:
Code:
For Each oMail In Folder.Items
      If InStr(oMail.Subject, "Bellen", vbTextCompare) <> 0 Then
           oRow = oRow + 1
           ExcelWB.Sheets(1).Cells(oRow, 1).Select
           ExcelWB.Sheets(1).Cells(oRow, 1) = oMail.Subject
           ExcelWB.Sheets(1).Cells(oRow, 2) = oMail.ReceivedTime
      End If
Next oMail

Mocht je Bellen als Bellen willen checken (dus "bellen", "beLLen" etc. moeten buiten beschouwing blijven), haal dan ",vbTextCompare" uit de InStr instructie (uiteraard het afsluitende haakje laten staan.
Mocht het zo zijn dat het onderwerp moet beginnen met "Bellen", dan
Code:
If InStr(oMail.Subject, "Bellen", vbTextCompare) = 1 Then

EDIT: Ik zie dat Edmoor ook iets vergelijkbaars had gemaakt. Jammer van al mijn typewerk. ;)

Tijs.
 
Laatst bewerkt:
Top!
Hij doet precies wat ik wil!

Is het nu ook mogelijk dat hij in meerdere subfolders kijkt?!

In het door mij gegeven voorbeeld kijkt de code alleen naar subfolder "werk"!
Ik heb nog 8 mappen waarin hij hetzelfde dien te doen, maar dan voor elke map op een andere sheet in Excel (zelfde bestand)!

de Subsfolder (afgerond) is bij al deze subfolders hetzelfde!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan