I know this is an Excel forum but ...

adambc

Active Member
Joined
Jan 13, 2020
Messages
412
Office Version
  1. 365
Platform
  1. Windows
Having failed in my attempt to move a VBA macro that uses Dir from a local/network drive environment to OneDrive, I’ve now built a solution that sends an Outlook email/attachment to the intended recipient, but they still have to save the attachment to the designated folder ...

So I’ve been looking at automatically saving the attachment when the new mail is received in Outlook ...

There are several posts in several forums that tell me how to do this, but I cannot get anything to work ...

I want to save the attachment that I KNOW will be named NEWINCIDENT??????.xlsm (where ?????? is a unique string) to a named folder ...

I'm running Office 365 Home/Outlook Version 2002 (Build 12527.20278 Click-to-Run) ...

This is "typical" of the VBA code I've put into ThisOutlookSession ...
Code:
Public WithEvents olItems As Outlook.Items

Private Sub Application_Startup()
Set olItems = Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub olItems_ItemAdd(ByVal Item As Object)
Dim NewMail As Outlook.MailItem
Dim Atts As Attachments
Dim Att As Attachment
Dim strPath As String
Dim strName As String

If Item.Class = olMail Then
Set NewMail = Item
End If

Set Atts = Item.Attachments

If Atts.Count > 0 Then
For Each Att In Atts
'neither of the following 2 lines work
If Att.FileName = "NEWINCIDENT*.*" Then
'If InStr(LCase(Att.FileName), "NEWINCIDENT") > 0 Then
strPath = "C:\Users\User\Documents\$$$ADAM\New_Incidents_Submitted"
strName = NewMail.Subject & " " & Chr(45) & " " & Att.FileName
Att.SaveAsFile strPath & strName
End If
Next
End If
End Sub
... and Saved/restarted Outlook ...

... but it doesn't seem to do anything (at least not what I want it to!) ...

Can anyone help please - or is there a forum as responsive as this one that has a similar focus on Outlook?

Many thanks ...
 
Last edited by a moderator:

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying
You could also use
VBA Code:
If InStr(1, Att.Filename, "NEWINCIDENT", vbTextCompare) > 0 Then
saves converting the string
 
Upvote 0
I was wishing to point out that @adambc had already the solution, but he failed when decided to compare a Lowercase string with an Uppercase one...
Bye
 
Upvote 0
Many thanks to both of you ...

Have made all the necessary changes (feeling a bit daft!) but it still doesn’t work!

I really don’t to (can’t) use Run a Script (involves a RegEdit since MS switched it off!) - but if WithEvents won’t work, I might not have any option?!!!
 
Upvote 0
Sorry, that should have read ...

“I really don’t want to (can’t) ...”
 
Upvote 0
ERRATUM ... all working perfectly now!

Turns out I had a “rogue” Outlook Data File that was set as the default, but the emails were going into the “proper” Inbox and hence the macro wasn’t seeing them - with a bit of fiddling about, the rogue has gone!

Thanks again (for pointing out my shortcomings - I will get better over time; and with help from you/others for which I’m extremely grateful) ...
 
Upvote 0
I was wishing to point out that @adambc had already the solution, but he failed when decided to compare a Lowercase string with an Uppercase one...
And I was just pointing out to the OP, that you don't need to do the conversion, which eliminates the possibility of that type of error :)

@adambc
Glad you sorted it & thanks for the feedback
 
Upvote 0
@Fluff @Anthony47

As above, I fixed the problem I had by getting rid of the rogue Outlook Data File that was lurking around - and was set as the default ...

But ... I now need to move the code to the real user's Outlook - and point it at a specific account eg MyName@OrgName.com (which is not their default account) ...

My code (as above) starts ...

VBA Code:
Public WithEvents olItems As Outlook.Items

Private Sub Application_Startup()

Set olItems = Session.GetDefaultFolder(olFolderInbox).Items

End Sub

Private Sub olItems_ItemAdd(ByVal Item As Object)

Etc etc etc

... but can you help me Set olItems = {the Inbox of MyName@OrgName.com}.Items

Many thanks ...
 
Upvote 0

Forum statistics

Threads
1,223,228
Messages
6,170,871
Members
452,363
Latest member
merico17

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top