Outlook VBA - moving mail item to public folder using variable within path

Status
Not open for further replies.

aaroncrt

Member
Outlook version
Outlook 2010 32 bit
Email Account
Exchange Server
Hi,

First of all, I am new to VBA so hopefully this will be an easy fix.

I have created a VBA script to move a selected email to a public folder location. The script prompts using an inputbox (in this example it's a project folder "001") and moves the email to the public folder called >Projects>"001 - TEST FOLDER". It uses the inputbox data as the folder location.

It is currently working until the folders reach above 099. All Public Folders are labelled like "001 - Test Folder", "023 - Project Name", "042 - Random" etc.

Is it just a case that I'm using the wrong variable type for the inputbox data?

Any help is appreciated.

Code:
Sub MoveProject() 
 
'Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder 
 
Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem 
 
Dim strProject As String 
 
Dim Proceed As VbMsgBoxResult 
 
Set objNS = Application.GetNamespace("MAPI") 
 
Dim appOutlook As New Outlook.Application 
 
Set nms = appOutlook.GetNamespace("MAPI") 
 
strProject = InputBox("Please enter Project") 
 
' If the public folder location is not \\public folders\ all public folders\projects\001 etc then the below line is required to be changed 
 
' Set objFolder = objNS.Folders("Public Folders").Folders("All Public Folders").Folders("Projects").Folders(strProject) 
 
strFolder = nms.Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Parent 
 
Set fld = nms.Folders(strFolder).Folders("All Public Folders").Folders("Projects").Folders(strProject)
  
 
For intX = 1 To objNS.Folders.Count 
 
If objNS.Folders.Item(intX).Name = "Public Folders" Then 
 
Exit For 
 
End If 
 
Next 
 
If Application.ActiveExplorer.Selection.Count = 0 Then 
 
'Require that this procedure be called only when a message is Selected 
 
Exit Sub 
 
End If 
 
Set oSelection = Application.ActiveExplorer.Selection 
 
For intX = ActiveExplorer.Selection.Count To 1 Step -1 
 
Set objX = ActiveExplorer.Selection.Item(intX) 
 
If objX.Class = olMail Then
   Proceed = MsgBox("Are you sure you want move the message to the Projects Folder " & strProject & "?", _
   vbYesNo + vbQuestion, "Confirm Move")
   If Proceed = vbYes Then 
 
Set objEmail = objX 
 
objEmail.Move fld
   End If 
 
End If 
 
Next 
 
Set objItem = Nothing 
 
Set objFolder = Nothing 
 
Set objInbox = Nothing 
 
Set objNS = Nothing 
 
End Sub
 
I don't see anything in the code that should cause it to fail on 4 digits. Does it give you an error message or fail on a specific line?

You're picking the correct folder by count? I wonder if search might be better...
 
it gives me

"Run-time error '440':

Array index out of bounds."

Debug then highlights "Set fld = nms.Folders(strFolder).Folders("All Public Folders").Folders("Backup Notifications").Folders(strProject)"

I was thinking a search might do it, but couldn't work out how to then make the search result into the variable I need.
 
This code from michael at VBOffice.net - finds folders .

this line returns the folder path:

Set Application.ActiveExplorer.CurrentFolder = m_Folder

you don't want to actually open it, so maybe this will work:

Set fld = m_Folder

And if it doesn't work with public folders... back to the drawing board. (Just checked - it finds PF.)
 
Thanks for the response Diane,

That won't work for this instance, as I'm already using an active selection for the email to be transferred. Basically I need to be able to click on an email and run the script, it prompts user which PF to transfer to and moves the email to it. This is to avoid the requirement of expanding the public folders and locating the folder etc to move to.

If there is a way to use the inputbox data as a search string for part of the public folder path, the result could then be used as the variable.

Something similar to the following perhaps? I just don't know enough VB to utilize it correctly.

Code:
Dim FldSub As Outlook.MAPIFolder 
 
For Each FldSub In nms.Folders(strFolder).Folders("All Public Folders").Folders("Projects").Folders
   If Left(FldSub.Name, 3) = strProject Then
 
I'd try it. It looks like it should work, but so does your other code.
 
FYI I got this working by searching the public folders for a match with the input variable.

Code:
ReDim sArray(0) As String 
 
If fld.Folders.Count Then
          
 For i = 1 To fld.Folders.Count
   If Left(fld.Folders(i).Name, 3) = strProject Then
       iElement = IIf(sArray(0) = "", 0, UBound(sArray) + 1)
       ReDim Preserve sArray(iElement) As String
       sArray(iElement) = fld.Folders(i).Name
   End If
 Next i
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
L Moving emails with similar subject and find the timings between the emails using outlook VBA macro Outlook VBA and Custom Forms 1
Geldner Problem submitting SPAM using Outlook VBA Form Outlook VBA and Custom Forms 2
P VBA to add email address to Outlook 365 rule Outlook VBA and Custom Forms 0
M Outlook 2016 outlook vba to look into shared mailbox Outlook VBA and Custom Forms 0
D Outlook VBA forward the selected email to the original sender’s email ID (including the email used in TO, CC Field) from the email chain Outlook VBA and Custom Forms 2
L Fetch, edit and forward an email with VBA outlook Outlook VBA and Custom Forms 2
BartH VBA no longer working in Outlook Outlook VBA and Custom Forms 1
W Can vba(for outlook) do these 2 things or not? Outlook VBA and Custom Forms 2
richardwing Outlook 365 VBA to access "Other Actions" menu for incoming emails in outlook Outlook VBA and Custom Forms 0
J Outlook Rules VBA Run a Script - Multiple Rules Outlook VBA and Custom Forms 0
C Outlook (desktop app for Microsoft365) restarts every time I save my VBA? Using Outlook 1
E Outlook 365 Outlook/VBA Outlook VBA and Custom Forms 11
J VBA for outlook to compare and sync between calendar Outlook VBA and Custom Forms 1
E Outlook VBA change GetDefaultFolder dynamically Outlook VBA and Custom Forms 6
S vba outlook search string with special characters Outlook VBA and Custom Forms 1
U Outlook 2019 VBA run-time error 424 Outlook VBA and Custom Forms 2
G VBA to save selected Outlook msg with new name in selected network Windows folder Outlook VBA and Custom Forms 1
F Excel VBA to move mails for outlook 365 on secondary mail account Outlook VBA and Custom Forms 1
K Outlook Office 365 VBA download attachment Outlook VBA and Custom Forms 2
V vBA for searching a cell's contents in Outlook and retrieving the subject line Outlook VBA and Custom Forms 1
B vBA for exporting excel file from outlook 2016 Outlook VBA and Custom Forms 3
S Excel vba code to manage outlook web app Using Outlook 10
H Custom Outlook Contact Form VBA Outlook VBA and Custom Forms 1
S Problem Checking the available stores in my Inbox (Outlook VBA) Outlook VBA and Custom Forms 0
S Outlook VBA How to adapt this code for using in a different Mail Inbox Outlook VBA and Custom Forms 0
O VBA Outlook Message Attachment - Array Index Out of Bounds Outlook VBA and Custom Forms 0
J Want to learn VBA Macros for Outlook. What book can you recommend? Outlook VBA and Custom Forms 2
M Outlook 2013 reminder email by using Outlook vba Outlook VBA and Custom Forms 2
D Outlook VBA error extracting property data from GetRules collection Outlook VBA and Custom Forms 10
O Email not leaving Outbox when using Excel VBA to sync Outlook account Outlook VBA and Custom Forms 4
B Outlook Business Contact Manager with SQL to Excel, User Defined Fields in BCM don't sync in SQL. Can I use VBA code to copy 1 field to another? BCM (Business Contact Manager) 0
N How can I increase/faster outlook VBA Macro Speed ? Using Outlook 2
N Outlook Email Rule execution through shortcut keys (VBA codes) Using Outlook 1
A VBA Code in Outlook disappears after first use Outlook VBA and Custom Forms 1
dweller Outlook 2010 Rule Ignores VBA Script Outlook VBA and Custom Forms 2
G Outlook VBA and Google Calendar ("Events") Outlook VBA and Custom Forms 1
J VBA Outlook : Subject line : Cut and Paste name to heading , number to very end of the body of Email Outlook VBA and Custom Forms 1
B Advanced Search in MS Outlook by VBA and SQL Outlook VBA and Custom Forms 2
K Outlook Archive to PST Files by Date Range VBA Script? Outlook VBA and Custom Forms 1
J Help Please!!! Outlook 2016 - VBA Macro for replying with attachment in meeting invite Outlook VBA and Custom Forms 9
S Find a cell value in excel using outlook vba Using Outlook 1
J Execute Add-In Button from VBA Outlook 2016 Outlook VBA and Custom Forms 1
J Open an outlook email by Subject on MS Access linked table with VBA Outlook VBA and Custom Forms 10
D create an html table in outlook custom form 2010 using vba in MsAccess Outlook VBA and Custom Forms 7
M Slow VBA macro in Outlook Outlook VBA and Custom Forms 5
T Outlook AntiSpam with VBA Outlook VBA and Custom Forms 1
F "Move to" O365 feature to Outlook client via VBA Outlook VBA and Custom Forms 4
B query outlook using vba Outlook VBA and Custom Forms 13
J VBA to switch Outlook online/offline Outlook VBA and Custom Forms 4
M VBA to change flag status in outlook contact item Outlook VBA and Custom Forms 3

Similar threads

Back
Top