ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VBA to read save messages on an Excel sheet (https://www.excelbanter.com/excel-programming/451511-vba-read-save-messages-excel-sheet.html)

Juan López

VBA to read save messages on an Excel sheet
 
Hi, I've been trying to write a scrip on VBA for outlook, I need that for each new email that contains a spceficid prhase in the subject, the email should be copied in Excel, the flieds that I want to copy are FROM, DATE, SUBJECT, BODY.
I tried to do this on Outlook but I couldn't. I don't know if you now how can I do this in excel. Thank you.

Claus Busch

VBA to read save messages on an Excel sheet
 
Hi,

Am Tue, 21 Jun 2016 06:00:35 -0700 (PDT) schrieb Juan López:

Hi, I've been trying to write a scrip on VBA for outlook, I need that for each new email that contains a spceficid prhase in the subject, the email should be copied in Excel, the flieds that I want to copy are FROM, DATE, SUBJECT, BODY.
I tried to do this on Outlook but I couldn't. I don't know if you now how can I do this in excel. Thank you.


try:

Sub OutlookMail()
Dim appOL As Outlook.Application
Dim objNameSpace As Outlook.Namespace
Dim objFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objItem As Object
Dim n As Long
Dim varOut() As Variant

Set appOL = CreateObject("outlook.Application")
Set objNameSpace = appOL.GetNamespace("MAPI")
Set objFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
Set objItems = objFolder.Items

For Each objItem In objItems
With objItem
If .Class = olMail Then
If InStr(.Subject, "Excel") 0 Then
ReDim Preserve varOut(2, n)
varOut(0, n) = .SenderName
varOut(1, n) = .ReceivedTime
varOut(2, n) = .Subject
n = n + 1
End If
End If
End With
Next
If n 0 Then
Range("A1").Resize(n, 3) = Application.Transpose(varOut)
Columns("A:C").AutoFit
End If
End Sub


Regards
Claus B.
--
Windows10
Office 2016

Claus Busch

VBA to read save messages on an Excel sheet
 
Hi again,

Am Tue, 21 Jun 2016 16:39:46 +0200 schrieb Claus Busch:

Sub OutlookMail()


better try:

Sub OutlookMail()
Dim appOL As Outlook.Application
Dim objNameSpace As Outlook.Namespace
Dim objFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objItem As Object
Dim n As Long

Set appOL = CreateObject("outlook.Application")
Set objNameSpace = appOL.GetNamespace("MAPI")
Set objFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
Set objItems = objFolder.Items

For Each objItem In objItems
With objItem
If .Class = olMail Then
If InStr(.Subject, "Hallo") 0 Then
n = n + 1
Cells(n, 1) = .SenderName
Cells(n, 2) = .ReceivedTime
Cells(n, 3) = .Subject
Cells(n, 4) = .Body
End If
End If
End With
Next
Columns("A:D").AutoFit
Rows("1:" & n).AutoFit
End Sub


Regards
Claus B.
--
Windows10
Office 2016


All times are GMT +1. The time now is 11:52 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com