![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
![]()
hi peeps thanks before hand for any help you can give,
i found this code on a website that pulls the attatchments off of the emails and stores them into a specified folder. its brilliant except for a few tiny gltches i have found. 1. All the emails are not being processed (i put a count in along with a messagebox to check, i put 12 emails into the folder with only xls files but ony 7 get transfered) 2. if the email hs multilple attatchments it only takes one can anyone help with this? i have put below the code thanks again Rivers For Each Item In SubFolder.Items For Each Atmt In Item.Attachments sel = SubFolder.Items.Count MsgBox sel If Right(Atmt.FileName, 3) = "xls" Then FileName = "C:\Documents and Settings\me\My Documents\Email Attachments\" & Atmt.FileName Atmt.SaveAsFile FileName Item.Move otherInbox.Folders("Flash Processed") i = i + 1 End If Next Atmt Next Item |
Ads |
#2
|
|||
|
|||
![]()
That code moves the item after processing the first attachment, so no others
can be processed. Also, in any loop where you're moving/deleting items from a collection you should use a count down for loop, not for...each. The Items collection count is changing as you move items so a for...each will process only half the items in a collection: For i = SubFolder.Items.Count To 1 Step -1 -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... hi peeps thanks before hand for any help you can give, i found this code on a website that pulls the attatchments off of the emails and stores them into a specified folder. its brilliant except for a few tiny gltches i have found. 1. All the emails are not being processed (i put a count in along with a messagebox to check, i put 12 emails into the folder with only xls files but ony 7 get transfered) 2. if the email hs multilple attatchments it only takes one can anyone help with this? i have put below the code thanks again Rivers For Each Item In SubFolder.Items For Each Atmt In Item.Attachments sel = SubFolder.Items.Count MsgBox sel If Right(Atmt.FileName, 3) = "xls" Then FileName = "C:\Documents and Settings\me\My Documents\Email Attachments\" & Atmt.FileName Atmt.SaveAsFile FileName Item.Move otherInbox.Folders("Flash Processed") i = i + 1 End If Next Atmt Next Item |
#3
|
|||
|
|||
![]()
ok ken being as though it was down to my thnking on my last query that caused
the problem in the first lace is this what you meant? For Each Item In SubFolder.Items For Each Atmt In Item.Attachments If Right(Atmt.FileName, 3) = "xls" Then FileName = "\\ Flash Recieved\" & Atmt.FileName Atmt.SaveAsFile FileName i = i + 1 End If Next Atmt Next Item For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item however my attatchments all copy across but when it comes to my for lop to move my items to a new folder it completes half then stops?? thanks before hand Rivers |
#4
|
|||
|
|||
![]()
thanks anyway figured it out needed a do loop wit a for statement
Do Until itemcheck = True If SubFolder.Items.Count 0 Then For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Else itemcheck = True End If Loop works perfectly "Rivers" wrote: ok ken being as though it was down to my thnking on my last query that caused the problem in the first lace is this what you meant? For Each Item In SubFolder.Items For Each Atmt In Item.Attachments If Right(Atmt.FileName, 3) = "xls" Then FileName = "\\ Flash Recieved\" & Atmt.FileName Atmt.SaveAsFile FileName i = i + 1 End If Next Atmt Next Item For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item however my attatchments all copy across but when it comes to my for lop to move my items to a new folder it completes half then stops?? thanks before hand Rivers |
#5
|
|||
|
|||
![]()
You're still better off using the count down For loop I showed rather than a
For...Each loop. That's best practice when moving or deleting items from a collection. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... thanks anyway figured it out needed a do loop wit a for statement Do Until itemcheck = True If SubFolder.Items.Count 0 Then For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Else itemcheck = True End If Loop works perfectly |
#6
|
|||
|
|||
![]()
Ken your right it doesnt work now it ran through once but now keeps giving
error ive never written a step loop before can you help Do Until SubFolder.Items.Count = 0 For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Loop "Ken Slovak - [MVP - Outlook]" wrote: You're still better off using the count down For loop I showed rather than a For...Each loop. That's best practice when moving or deleting items from a collection. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... thanks anyway figured it out needed a do loop wit a for statement Do Until itemcheck = True If SubFolder.Items.Count 0 Then For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Else itemcheck = True End If Loop works perfectly |
#7
|
|||
|
|||
![]()
Dim iCount As Long
iCount = SubFolder.Items.Count Dim i As Long For i = iCount To 1 Step -1 Item.Move otherInbox.Folders("Flash Processed") Next Also, Move is a function and returns an object reference to the newly moved item. Often things work better when you get the returned object, even as a throw-away item object that isn't used. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... Ken your right it doesnt work now it ran through once but now keeps giving error ive never written a step loop before can you help Do Until SubFolder.Items.Count = 0 For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Loop |
#8
|
|||
|
|||
![]()
Done as requested Ken but now getting a new error message Lol,
"object variable or with block variable not set " any ideas? "Ken Slovak - [MVP - Outlook]" wrote: Dim iCount As Long iCount = SubFolder.Items.Count Dim i As Long For i = iCount To 1 Step -1 Item.Move otherInbox.Folders("Flash Processed") Next Also, Move is a function and returns an object reference to the newly moved item. Often things work better when you get the returned object, even as a throw-away item object that isn't used. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... Ken your right it doesnt work now it ran through once but now keeps giving error ive never written a step loop before can you help Do Until SubFolder.Items.Count = 0 For Each Item In SubFolder.Items Item.Move otherInbox.Folders("Flash Processed") Next Item Loop |
#9
|
|||
|
|||
![]()
Not without seeing the code as it stands now, and not without knowing what
line causes the error. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... Done as requested Ken but now getting a new error message Lol, "object variable or with block variable not set " any ideas? |
#10
|
|||
|
|||
![]()
hi ken
this is the code thanks Private Sub CommandButton1_Click() 'On Error GoTo SaveAttachmentsToFolder_err Dim ns As NameSpace Dim Inbox As MAPIFolder Dim SubFolder As MAPIFolder Dim Item As Object Dim Atmt As Attachment Dim FileName, sel As String Dim i As Integer Dim varResponse As VbMsgBoxResult Dim oRecip As Outlook.Recipient Dim itemcheck As Boolean Dim myitem As Object Dim otherInbox As Outlook.MAPIFolder Dim iCount As Long Dim i1 As Long Set ns = GetNamespace("MAPI") Set oRecip = ns.CreateRecipient("Air Flash") If oRecip.Resolve() Then Set otherInbox = ns.GetSharedDefaultFolder(oRecip, olFolderInbox) Else MsgBox "No Mailbox" End If Set SubFolder = otherInbox.Folders("Flash Recieved") i = 0 If SubFolder.Items.Count = 0 Then MsgBox "There are no messages in the Sales Reports folder.", vbInformation, _ "Nothing Found" Exit Sub End If For Each Item In SubFolder.Items For Each Atmt In Item.Attachments If Right(Atmt.FileName, 3) = "xls" Then FileName = "\\iodine.euston.uk.ssp\groupshare\Finance\AIR FINANCE\Financial Analyst\AIR REPORTS\Flash\Air Flash Recieved\" & Atmt.FileName Atmt.SaveAsFile FileName i = i + 1 End If Next Atmt Next Item i = 1 iCount = SubFolder.Items.Count For i1 = iCount To 1 Step -1 Item.Move otherInbox.Folders("Flash Processed") Next ' Show summary message If i 0 Then varResponse = MsgBox("I found " & i & " attached files." _ & vbCrLf & "I have saved them into the \\iodine.euston.uk.ssp\groupshare\Finance\AIR FINANCE\Financial Analyst\AIR REPORTS\Flash\Air Flash Recieved\." _ & vbCrLf & vbCrLf & "Would you like to view the files now?" _ , vbQuestion + vbYesNo, "Finished!") ' Open Windows Explorer to display saved files if user chooses If varResponse = vbYes Then Shell "Explorer.exe /e,\\iodine.euston.uk.ssp\groupshare\Finance\AIR FINANCE\Financial Analyst\AIR REPORTS\Flash\Air Flash Recieved\", vbNormalFocus End If Else MsgBox "I didn't find any attached files in your mail.", vbInformation, "Finished!" End If ' Clear memory SaveAttachmentsToFolder_exit: Set Atmt = Nothing Set Item = Nothing Set ns = Nothing Exit Sub ' Handle Errors SaveAttachmentsToFolder_err: MsgBox "An unexpected error has occurred." _ & vbCrLf & "Please note and report the following information." _ & vbCrLf & "Macro Name: GetAttachments" _ & vbCrLf & "Error Number: " & Err.Number _ & vbCrLf & "Error Description: " & Err.Description _ , vbCritical, "Error!" Resume SaveAttachmentsToFolder_exit End Sub "Ken Slovak - [MVP - Outlook]" wrote: Not without seeing the code as it stands now, and not without knowing what line causes the error. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Rivers" wrote in message ... Done as requested Ken but now getting a new error message Lol, "object variable or with block variable not set " any ideas? |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Outlook Login Issues / Possible Password Authentication Issues | D|an-0 | Outlook - General Queries | 0 | December 21st 07 02:22 AM |
Forward selected mail as attatchment | Yallah | Outlook and VBA | 1 | October 10th 07 06:02 AM |
Detach an attachment? | Frank D. Nicodem, Jr. | Outlook Express | 1 | March 12th 07 05:44 PM |
not using attatchment | tony giannini | Outlook Express | 3 | July 15th 06 03:21 PM |
How do I forward email as an attatchment? | Bill | Outlook - General Queries | 7 | February 23rd 06 09:05 PM |