Hvis man av en eller annen grunn skulle trenge å hente ut alle mailadresser fra alle mailer i alle mapper i Outlook, så finnes det selvsagt hjelp å få. En relativt enkel metode å gjøre det på, er via dette scriptet:
Sub EmailExport()
'Requires reference to Microsoft Scripting Runtime
'Tools –> References –> check "Microsoft Scripting Runtime"
Dim outApp As New Outlook.Application
Dim mpf As Outlook.MAPIFolder
Dim mpfSubFolder As Outlook.MAPIFolder
Dim mpfSubFolder1 As Outlook.MAPIFolder
Dim flds As Outlook.Folders
Dim flds1 As Outlook.Folders
Dim idx As Integer
Dim strEmail As String
Dim strEmails As String
Dim strCC As String
Dim strCCs As String
Dim dic As New Dictionary
Dim i As Integer
i = 1
Set mpf = Application.GetNamespace("Mapi").PickFolder
Set flds = mpf.Folders
Set mpfSubFolder = flds.GetFirst
Do While Not mpfSubFolder Is Nothing
Debug.Print i & " - " & mpfSubFolder; ""
For Each objItem In mpfSubFolder.Items
If objItem.Class = olMail Then
strEmail = objItem.SenderEmailAddress
strCC = objItem.CC
If Not dic.Exists(strEmail) Then
strEmails = strEmails + strEmail + vbCrLf
strCCs = strCCs + strCC + vbCrLf
End If
End If
Next
Set flds1 = mpfSubFolder.Folders
Set mpfSubFolder1 = flds1.GetFirst
Do While Not mpfSubFolder1 Is Nothing
Debug.Print i & " - " & mpfSubFolder1; ""
For Each objItem1 In mpfSubFolder1.Items
If objItem1.Class = olMail Then
strEmail = objItem1.SenderEmailAddress
strCC = objItem1.CC
If Not dic.Exists(strEmail) Then
strEmails = strEmails + strEmail + vbCrLf
strCCs = strCCs + strCC + ";"""
End If
End If
Next
Set mpfSubFolder1 = flds1.GetNext
i = i + 1
Loop
Set mpfSubFolder = flds.GetNext
i = i + 1
Loop
writeText = SaveTextToFile("C:\temp\mailadresser.txt", strEmails, True)
writeText = SaveTextToFile("C:\temp\mailadresserCC.txt", strCCs, True)
dic.Add strEmail, """"
End Sub
'this is verbatim from http://www.freevbcode.com/ShowCode.Asp, it saves the files to a text file
Public Function SaveTextToFile(FileFullPath As String, sText As String, Optional Overwrite As Boolean = False) As Boolean
'Purpose: Save Text to a file
'Parameters:
'– FileFullPath – Directory/FileName to save file to
'– sText – Text to write to file
'– Overwrite (optional): If true, if the file exists, it
'is overwritten. If false,
'contents are appended to file
'if the file exists
'Returns: True if successful, false otherwise
'Example:
'SaveTextToFile "C:\My Documents\MyFile.txt", "Hello There"
On Error GoTo ErrorHandler
Dim iFileNumber As Integer
iFileNumber = FreeFile
If Overwrite Then
Open FileFullPath For Output As #iFileNumber
Else
Open FileFullPath For Append As #iFileNumber
End If
Print #iFileNumber, sText
SaveTextToFile = True
ErrorHandler:
Close #iFileNumber
End Function