PDA

View Full Version : Macro for automation of updating folders in outlook ready for dropbox



FUSESvc
02-19-2017, 12:06 PM
Version of the program: Microsoft Office 365

:)

Hi everyone. I have been on here before but completely no idea of my old login details etc, so started another profile.

I have the following code set up. From Ron Bruin I believe.

Private Sub Application_Startup(Test)




End Sub


Sub Test()
'Arg 1 = Folder name of folder inside your Inbox
'Arg 2 = File extension, "" is every file
'Arg 3 = Save folder, "C:\Users\Ron\test" or ""
' If you use "" it will create a date/time stamped folder for you in your "Documents" folder
' Note: If you use this "C:\Users\Ron\test" the folder must exist.


SaveEmailAttachmentsToFolder "DBTransfer", "", "C:\Users\Kev\Dropbox\Accountant stuff\Online Purchases\General"

End Sub










Sub SaveEmailAttachmentsToFolder(OutlookFolderInInbox As String, _
ExtString As String, DestFolder As String)
Dim ns As NameSpace
Dim Inbox As MAPIFolder
Dim SubFolder As MAPIFolder
Dim Item As Object
Dim Atmt As Attachment
Dim FileName As String
Dim MyDocPath As String
Dim I As Integer
Dim wsh As Object
Dim fs As Object


On Error GoTo ThisMacro_err


Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set SubFolder = Inbox.Folders(OutlookFolderInInbox)


I = 0
' Check subfolder for messages and exit of none found
If SubFolder.Items.Count = 0 Then
MsgBox "There are no messages in this folder : " & OutlookFolderInInbox, _
vbInformation, "Nothing Found"
Set SubFolder = Nothing
Set Inbox = Nothing
Set ns = Nothing
Exit Sub
End If


'Create DestFolder if DestFolder = ""
If DestFolder = "" Then
Set wsh = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
MyDocPath = wsh.SpecialFolders.Item("mydocuments")
DestFolder = MyDocPath & "\" & Format(Now, "dd-mmm-yyyy hh-mm-ss")
If Not fs.FolderExists(DestFolder) Then
fs.CreateFolder DestFolder
End If
End If


If Right(DestFolder, 1) <> "\" Then
DestFolder = DestFolder & "\"
End If


' Check each message for attachments and extensions
For Each Item In SubFolder.Items
For Each Atmt In Item.Attachments
If LCase(Right(Atmt.FileName, Len(ExtString))) = LCase(ExtString) Then
FileName = DestFolder & Item.SenderName & " " & Atmt.FileName
Atmt.SaveAsFile FileName
I = I + 1
End If
Next Atmt
Next Item


' Show this message when Finished
If I > 0 Then
MsgBox "You can find the files here : " _
& DestFolder, vbInformation, "Finished!"
Else
MsgBox "No attached files in your mail.", vbInformation, "Finished!"
End If


' Clear memory
ThisMacro_exit:
Set SubFolder = Nothing
Set Inbox = Nothing
Set ns = Nothing
Set fs = Nothing
Set wsh = Nothing
Exit Sub


' Error information
ThisMacro_err:
MsgBox "An unexpected error has occurred." _
& vbCrLf & "Please note and report the following information." _
& vbCrLf & "Macro Name: SaveEmailAttachmentsToFolder" _
& vbCrLf & "Error Number: " & Err.Number _
& vbCrLf & "Error Description: " & Err.Description _
, vbCritical, "Error!"
Resume ThisMacro_exit


End Sub





Two problems with this and I'll tell you what I need shortly.



it only copies emails with attachments.
I have tried running it at the beginning and end of starting outlook but failed with errors. Running manually works fine. I need outlook to run its rules, then run this script.



Scope...

I have an accountant, that likes everything on paper. I however prefer a paperless office. He has agreed for us to share a dropbox folder, referred to in the code above, "C:\Users\Kev\Dropbox\Accountant stuff\Online Purchases\General". It's a start.

As I purchase a lot online, and get a lot of online receipts, I'd like to send him them as they come in automatically.

I have set up various rules in outlook that detect a potential receipt and move it into a folder named dbtransfer, (dropbox transfer).


What I would like is a script to run after the rules have run, and consolidated all receipts (with or without attachments) into the dbtransfer folder, and upon successful syncing, delete them so they don't get added again. It will be prudent to have a file with copies of all receipts stored in my documents on the PC in a current year folder.

Is this possible, can anyone please come up with a solution that would work?

My VBA skills are none existent really, I used to program my Commodore 64 in Basic, then moved onto Machine Code. I had limited access to the PC though as I had to share the telly with my parents and could never get on!!

Thanks all.

Kev