How to move emails with same subject of one selected email? - vba

I want to move emails from one folder to another based on the selection of one item.
If I choose one email I want all email with a similar subject to be moved from that folder into another folder (we can sort by subject and move the email, this may be faster).
Also I want to calculate response time of first received email with same subject and the response time of the email which I have replied at the last.
Moving one email is working.
Example
Subject of the email: Need data
Received at 1 AM, acknowledged at 1:10 AM and responded at 1:40 AM
In that case I need to calculate the timings as 40 MIN

i have tried selecting one email and run the macro and it is moving to another folder correctly but i need all the similar subject of the has to be moved faster
To find items that correspond to your conditions in Outlook you may use the following methods:
Find/FindNext - read more about these methods in the How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#, VB.NET) article.
Restrict - read more about this method in the How To: Use Restrict method to retrieve Outlook mail items from a folder article.
AdvancedSearch - see Advanced search in Outlook programmatically: C#, VB.NET for more information.
The Move method can be used for moving items into another folder.

Related

How can I automatically forward an outlook meeting based on the meeting category or when it's marked private?

I'm trying to automatically forward meetings from my work email to my personal email whenever I flag a meeting as private. I don't really even know where to start. Any one able to help me out?
I've tried looking for solutions based on the category of the meeting but that hasn't yielded any resulted either
You can create a VBA macro where you could handle changes to items by using the Items.ItemChange or AppointmentItem.PropertyChange events. When appointment items marked as private the following property is set under the hood:
Appointment.Sensitivity = olPrivate
So, you need to track changes made to the AppointmentItem.Sensitivity property which returns or sets a constant in the OlSensitivity enumeration indicating the sensitivity for the Outlook item.
But I'd suggest starting from the Getting started with VBA in Office article to be more familiar with VBA environment.

How to setup rule for emails that contains specific words in top email body only?

I created a rule that moves emails that contains a specific word in body to another folder.
It applies whenever that word is in body of older emails down the thread (when you scroll down to older emails that were replied to).
I need it to identify that word within the most recent email body only (and disregard the rest of the thread).
Outlook doesn't distinguish old email bodies and new ones. The message body is a single string. The best what you can do is to compare the message body of two items from the same conversation and extract the newer part. So, following that you will be able to recognize whether a keyword is a part of the newer message or not. The GetConversation method obtains a Conversation object that represents the conversation to which this item belongs. A conversation represents one or more items in one or more folders and stores.
Use the Find/FindNext or Restrict methods of the Items class to find items that correspond to the specified condition. Read more about them with code examples in the following articles:
How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#, VB.NET)
How To: Use Restrict method to retrieve Outlook mail items from a folder
Also you may find the AdvancedSearch method of the Application class helpful. The key benefits of using the AdvancedSearch method in Outlook are:
The search is performed in another thread. You don’t need to run another thread manually since the AdvancedSearch method runs it automatically in the background.
Possibility to search for any item types: mail, appointment, calendar, notes etc. in any location, i.e. beyond the scope of a certain folder. The Restrict and Find/FindNext methods can be applied to a particular Items collection (see the Items property of the Folder class in Outlook).
Full support for DASL queries (custom properties can be used for searching too). You can read more about this in the Filtering article in MSDN. To improve the search performance, Instant Search keywords can be used if Instant Search is enabled for the store (see the IsInstantSearchEnabled property of the Store class).
You can stop the search process at any moment using the Stop method of the Search class.
Read more about that in the Advanced search in Outlook programmatically: C#, VB.NET article.

Search for the absence of text in email body

Everyday, I receives nearly 100+ emails which contain the following.
CRM Status: Open
CRM Interaction Number: XXXXX
On some emails Status and Number are missing.
Example:
CRM Status:
CRM Interaction Number:
I need to look manually and categorize as "Not Ticketed".
Is there a way to find how many emails don't have the Ticket# and Status.
Is there a way that a VBA can use to find out how many emails doesn't have the Ticket# and Status.
The Outlook object model provides the Find/FindNext and Restrict methods of the Items class. You can read more about these methods in the following articles:
How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#, VB.NET)
How To: Use Restrict method to retrieve Outlook mail items from a folder
Also, you may find the AdvancedSearch method of the Application class helpful.
The key benefits of using the AdvancedSearch method in Outlook are:
The search is performed in another thread. You don’t need to run another thread manually since the AdvancedSearch method runs it automatically in the background.
Possibility to search for any item types: mail, appointment, calendar, notes etc. in any location, i.e. beyond the scope of a certain folder. The Restrict and Find/FindNext methods can be applied to a particular Items collection (see the Items property of the Folder class in Outlook).
Full support for DASL queries (custom properties can be used for searching too). You can read more about this in the Filtering article in MSDN. To improve the search performance, Instant Search keywords can be used if Instant Search is enabled for the store (see the IsInstantSearchEnabled property of the Store class).
You can stop the search process at any moment using the Stop method of the Search class.
Read more about this method in the Advanced search in Outlook programmatically: C#, VB.NET article.

Outlook 2010 new assignment automatic setup

I have just started a new job where I receive a new assignment with a job name in the subject field of an email (amongst many other emails).
I would like to build a macro that automatically takes a specified string out of the subject text - creates a new inbox folder with that name - and then sets up a rule to move a copy of all future mail with that string into the named folder.
I am doing this at least 3 or 4 times a day and would like to make this task less repetitive.
The site is for programmers to help one another develop their programming skills. It is not a site where you can post a vague specification and hope someone will implement it for them. No one could implement your specification because too much is missing. You need to start by designing the system you seek which will identify all the information you will need for a specification.
Step 1: You need something to look at every incoming email and classify it as a task-email or not-a-task-email. Is this classification simple? Perhaps task-emails have a subject that starts with the word “Task”. Perhaps there is a phrase within the body of the email? Are task-emails totally consistent? Does a manager have a system for assigning tasks? Perhaps they are given a list of new tasks and a list of people who could action that task. They select a task and a person and the system creates the assignment email. With such a system, the emails will be totally consistent. But, if the emails are hand-crafted by the manager, they will be similar but not identical in format. Handling inconsistencies will make this a much more difficult task.
Step 2: Having identified an email as a new-task-email, the subject must be decoded to extract the task identifier. What is the format of that subject? Is it something simple like “Task xxxxxxx” where “xxxxxxx” is the identifier? Is the subject of a new assignment different from the subject of follow-up email?
Step 3: Your specification implies you can easily distinguish new and follow-up task-emails. I deduce this from the requirement to create a new folder for new task emails and to create a rule that moves any follow-up emails to that folder. I doubt creating a new rule for each task is a good idea. If you have at least 3 or 4 of these emails a day. That is 15 or 20 or more new rules per week. Rules that will have to be checked for every new email. I do not know how your business operates but this does not seem sensible to me. You want to create a new folder per task which seems sensible. Once you have finished a task, I assume you delete the task folder or, better, move it to an archive folder. Then you will have to go into the Rule manager, find the relevant rule and delete it. Will you do that manually or will you want another macro?
Step 4: How are you going to implement this? I think you are correct in thinking a rule is the right approach. Rules have lots of ways of selecting an email for processing and lots of possible actions they can perform on a selected email. However, there is a limit to the selection and action options. I am confident you will exceed those limits. One of the possible actions is to “run a script”. That is, pass the email to a macro that can do anything an Outlook VBA macro can do not just the things Microsoft thought would be useful for a rule.
Step 5: What is the scope of this macro? You have three types of email: new-task, follow-up-task and non-a-task email. Can you have one rule to identify new-task emails and another to identify follow-up-task emails? If you can, you will need a macro to create the folder. You might be able to move follow-up-task-emails with a rule or you might need another macro for that. If you cannot identify a task-email or a follow-up-task email, you will probably have to pass every email to the macro which will handle the classification and the auctioning of the task-emails.
The above is as much of the design as I can create at this stage. You need to finish the design and update your question. I cannot promise that anyone will help you create your macros but at least you will know what you have to investigate to write those macros yourself.

Creating tasks in Outlook to run automatically

I am trying to create an automatic task in Outlook 2010, but am having trouble doing so based on my lack of knowledge of Visual Basic, I believe.
I am trying to find a way that I can set perhaps a Macro in outlook to automatically create a calendar appointment when an email is recieved...
Everyday, I will recieve an automatically generated email from an automated system which includes my schedule for the following day. What I want to do is as soon as the email is received, I want Outlook to create an all-day appointment for the next day and add it to my calendar, including the excel spreadsheet (my schedule) which is attached to that same email.
Either for Outlook to strip the attachement away from the email and add it to the appointment, or for the entire email to become the appointment with the Excel sheet still attached.
I've had a browse around online, but cannot seem to find a solution for my problem.
If there is not a way to create the appointment for the next day, the date of the schedule is always included in the subject line (in the format DD/MM/YYYY) and as the email is generated automatically, all of the text in the subject and body remain the same; only the date is changed automatically per email and of course, the attachment too (however is always a spreadsheet in the format .xls).
The main reason that I am trying to do this is so that when I need to check my schedule, I can find it in my calendar, rather than having to trail through my emails to find it. This is especially more convenient when viewing from a mobile device. I know there are probably easier ways of simply finding the original email, but I'm hoping to be able to accomplish this way of working.
Currently, I do this manually by creating a new all-day appointment in my calendar each evening after I receive my schedule, then copy the excel spreadsheet from the email to the calendar appointment, add the subject line "Current Day Schedule", then save. This doesn't take particularly long, but to have it completed automatically would be amazing
Any assistance that anyone can provide would be incredible!
Best,
Without providing too much actual code (although I can edit my response from home later), here is what I would do:
Using Outlook's NewMail event, check the subject of the most recent message. In theory the "schedule email" is pretty standard and you can identify it based on its subject.
If the newest message is the schedule, then open the Appointments collection and create a new item.
Modify all of the properties to suit your needs, including adding an attachment.
All of this requires you have some VBA knowledge...which I'm not sure you have at your disposal or not.