Suggestions

I’m looking for ideas and suggestions for future posts. Since Outlook is my specialty, I’m particularly interested in features or capabilities you wish it had. Keep in mind that I don’t work for Microsoft and cannot change the basic product itself. I can pass suggestions on to the folks at Microsoft though. While I cannot promise that I’ll use every suggestion or that I can even come up with a solution, I will do my best to respond to all of them, even those that don’t have anything to do with Outlook. If you’d like to share an idea, then please add it as a comment to this page.

638 comments on “Suggestions

    • Hi, Phil.

      Sorry, I’d forgotten that I hadn’t responded. Thanks for the reminder. I just replied to all of your outstanding posts.

  1. Hi David,

    Some time ago you created a task count module which exported the daily task counts within a date range. (Thank you!). This was brilliant and worked very well.

    I have a request for something similar which perhaps yo could help me with, I have looked at some of the similar post on your site but my knowledge isn’t good enough to modify the code!

    I would like to be able to count the number of incoming and sent emails from a mailbox and log this into an excel spreadsheet in order to understand how busy the mailbox is and if the demand is going up or down over time to help me with my teams resourcing level.

    Is this something you could help me with?

    Rich

    • Hi, Rich.

      Good to hear from you again.

      Yes, I can help with this. I’ll put something together and post it when it’s ready.

  2. David,

    Thank you for sharing your knowledge! I’ve been using your “Sending a Meeting Reminder Email in Outlook” script for several weeks and it’s been working great. I was including my signature in the script, but this is now no longer acceptable. A few weeks ago, we were given specific directions in how we should structure our signature when sending email (specific font and multiple font sizes). Since I have my signature correctly formatted and saved in Outlook’s default Signature folder, I’m hoping you may provide additional scripting so the formatted and saved signature will appear under the body of the reminder email when I use your original Meeting Reminder Email script.

    Thanks in advance for your assistance!

    Debbie

    • Hi, Debbie.

      Do you have the signature you’re required to use set as your default signature? If so, then the fix is a little easier. Please let me know the answer to that question and I’ll adjust accordingly.

    • Yes, I have the formatted signature set up as my default signature. It appears when I send messages from Outlook, but not when I send meeting invitations. Thank you!

    • Debbie,

      Please try this version. Outlook only adds the signature when the message is displayed on the screen. All I’ve done here is force the message to appear on screen when it’s created instead of doing everything behind the scenes.

      Sub SendMeetingReminder()
          'On the next line change True to False if you want the reminder to send without giving you the chance to edit it.
          'Leave it set to True if you want an opportunity to edit the message before sending it.
          Const EDIT_FIRST = True
          'On the next line edit the message as desired.  Both %START% and %LOCATION% are parameters that will be replaced
          'with the meeting start time and location respectively before the message is displayed/sent.
          Const MSG_TEXT = "Just a quick reminder about this meeting.<br><br>Start: <b>%START%</b><br>Location: <b>%LOCATION%</b><br><br>"
          Const MACRO_NAME = "Send Meeting Reminder"
          Const ERR_MSG = "You must select an appointment for this macro to work."
          Dim olkApt As Object, _
              olkRem As Outlook.MailItem, _
              olkRec As Outlook.Recipient
          On Error Resume Next
          Select Case TypeName(Application.ActiveWindow)
              Case "Explorer"
                  Set olkApt = Application.ActiveExplorer.Selection(1)
              Case "Inspector"
                  Set olkApt = Application.ActiveInspector.CurrentItem
          End Select
          If TypeName(olkApt) <> "Nothing" Then
              If olkApt.Class = olAppointment Then
                  Set olkRem = Application.CreateItem(olMailItem)
                  With olkRem
                      .Display
                      .Subject = "Meeting Reminder: " & olkApt.Subject
                      .HTMLBody = MSG_TEXT & .HTMLBody
                      .HTMLBody = Replace(.HTMLBody, "%START%", Format(olkApt.Start, "ddd, mmm d at h:mm AMPM"))
                      .HTMLBody = Replace(.HTMLBody, "%LOCATION%", olkApt.Location)
                      For Each olkRec In olkApt.Recipients
                          If (olkRec.Type <> olResource) And (olkRec.Name <> Session.CurrentUser.Name) Then
                              If Not olkRec.MeetingResponseStatus = olResponseDeclined Then
                                  olkRem.Recipients.Add olkRec.Name
                              End If
                          End If
                      Next
                      .Recipients.ResolveAll
                      If NOT EDIT_FIRST Then
                          .Send
                      End If
                  End With
              Else
                  MsgBox ERR_MSG, vbCritical + vbOKOnly, MACRO_NAME
              End If
          Else
              MsgBox ERR_MSG, vbCritical + vbOKOnly, MACRO_NAME
          End If
          On Error GoTo 0
          Set olkApt = Nothing
          Set olkRem = Nothing
          Set olkRec = Nothing
      End Sub
      
    • Good morning David,

      This new version you provided works, but a minor problem has come up. The line “Just a quick reminder about this meeting.” appears as New Times Roman 12pt font. The rest of the information that appears on the screen is the Calabri Body 10 pt. font. My signature shows up as designed (Arial 11 and 10 pt. font). Prior to the update, my entire message appeared in New Time Roman 12pt. font, which was fine until my superiors decided they wanted a specific format for our signature.

      I don’t mean to nitpick, but is there a way to format the body of the message as one font and size? I’m sorry to be such a pain.

      Thank you.

      Debbie

    • Hi, Debbie.

      What font and font size do you want and do you want the signature in that same font/size?

    • Hi David,

      I would like the message to be displayed in Calabri (Body) 11pt font. The signature file is currently formatted, saved, and displays correctly when inserted with your script, so no modification to the sig is necessary.

      Thanks for all you do!

      Debbie

    • Hi David,

      I would like the body of my message to be displayed in Calabri (Body) 11pt font. The signature file is currently formatted, saved, and displays correctly when inserted with your script, so no modification to the signature is necessary.

      Thanks again for all you do!

      Debbie

    • Hi, Debbie.

      Do you want this for message you send or receive? If it’s the former, then the simplest solution is to set the default font in Outlook Options. To do that

      1. Click File
      2. Click Options
      3. Click Mail
      4. Click Stationery and Fonts
      5. Click the Font button under New mail messages
      6. Choose your font
    • Hi David,

      I would like the outgoing message to be displayed in a specific font. I checked and the default font settings are already in place (Calibri body, 11 pt). When I run the script, the block of text the script creates is in different fonts (Times New Roman 12pt, and Calibri 10pt). Text I enter after the scripted block of text is displayed correctly. It’s the text created by the script that I would like to have a uniform appearance using my default font, if that is possible. Thank you!

      Debbie

    • Hi, Debbie.

      Apologies, I didn’t realize that I’d created a solution for you and that you want it changed. I was thinking that your post was a new comment, not a follow up.

      Please delete the code you have now and try this solution. Note that with this version you have to specify the name of the signature you want to use in the script.

      Sub SendMeetingReminder()
          'On the next line, change True to False if you want the reminder to send without giving you the chance to edit it.
          'Leave it set to True if you want an opportunity to edit the message before sending it.
          Const EDIT_FIRST = True
          'On the next line, edit the message as desired.  Both %START% and %LOCATION% are parameters that will be replaced
          'with the meeting start time and location respectively before the message is displayed/sent.
          Const MSG_TEXT = "Just a quick reminder about this meeting.<br><br>Start: <b>%START%</b><br>Location: <b>%LOCATION%</b>"
          'On the next line, ednter the name of the signature you want to use.
          Const MSG_SIG = "S2"
          Const MACRO_NAME = "Send Meeting Reminder"
          Const ERR_MSG = "You must select an appointment for this macro to work."
          Dim olkApt As Object, _
              olkRem As Outlook.MailItem, _
              olkRec As Outlook.Recipient, _
              strMsg As String, _
              strSig As String
          On Error Resume Next
          Select Case TypeName(Application.ActiveWindow)
              Case "Explorer"
                  Set olkApt = Application.ActiveExplorer.Selection(1)
              Case "Inspector"
                  Set olkApt = Application.ActiveInspector.CurrentItem
          End Select
          If TypeName(olkApt) <> "Nothing" Then
              If olkApt.Class = olAppointment Then
                  strSig = ReadSignatureFile(MSG_SIG)
                  Set olkRem = Application.CreateItem(olMailItem)
                  With olkRem
                      .Subject = "Meeting Reminder: " & olkApt.Subject
                      strMsg = MSG_TEXT
                      strMsg = Replace(strMsg, "%START%", Format(olkApt.Start, "ddd, mmm d at h:mm AMPM"))
                      strMsg = Replace(strMsg, "%LOCATION%", olkApt.Location)
                      .HTMLBody = strMsg & "<br><br>" & strSig
                      For Each olkRec In olkApt.Recipients
                          If (olkRec.Type <> olResource) And (olkRec.Name <> Session.CurrentUser.Name) Then
                              If Not olkRec.MeetingResponseStatus = olResponseDeclined Then
                                  olkRem.Recipients.Add olkRec.Name
                              End If
                          End If
                      Next
                      .Recipients.ResolveAll
                      If EDIT_FIRST Then
                          .Display
                      Else
                          .Send
                      End If
                  End With
              Else
                  MsgBox ERR_MSG, vbCritical + vbOKOnly, MACRO_NAME
              End If
          Else
              MsgBox ERR_MSG, vbCritical + vbOKOnly, MACRO_NAME
          End If
          On Error GoTo 0
          Set olkApt = Nothing
          Set olkRem = Nothing
          Set olkRec = Nothing
      End Sub
      
      Function ReadSignatureFile(strNam)
          Dim objFSO As Object, objFil As Object, strPth As String
          strPth = Environ("APPDATA") & "\Microsoft\Signatures\" & strNam & ".htm"
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If objFSO.FileExists(strPth) Then
              Set objFil = objFSO.OpenTextFile(strPth)
              ReadSignatureFile = objFil.ReadAll
              objFil.Close
          Else
              ReadSignatureFile = "Signature file does not exist"
          End If
          Set objFil = Nothing
          Set objFSO = Nothing
      End Function
      
    • Hi David,

      I tried the new script and it mostly worked. The first line of the the message (Just a quick reminder…) was still being displayed in the Times New Roman font. I examined your script and was able to get this line to display in my default font (Calibri 11pt) by adding a break into the script as shown:

      Const MSG_TEXT = “Just a quick…

      The body of my message now appears in the same font and looks great!

      Thank you very much for your diligence with my request. I sincerely appreciate the time you’ve taken to help with my request.

      Debbie

  3. Hi David,

    Could you please share some article on auto reply mail for below scenario,

    Step 1: Mail sent to support team with Subject:”Error: found in the text1″
    Step 2: Auto reply mail sent acknowledging the step 1 mail based on Subject keyword – “Error”
    Step 3: On the same thread,again one more Mail sent to support team on top of Step 2 mail with Subject:”Error: found in text 2″

    Step 4: Now the Auto reply mail doesn’t acknowledge my Step 3 mail , as Step 2 was in replied state(ie:”RE:”)
    since I have added an exception for auto reply to not send the reply when the subject keywords are like “RE:” or “FW:”

    I need to acknowledge the mail even if it is same thread.

    how can i overcome this scenario.I understood that if any of mail threads have “RE:” or “FW:” apart from latest mail received,auto reply is not working.

    Give some suggestions on the above.
    Thanks
    R.B

    • Hi, R.B.

      Outlook has at least three ways to “auto reply” to a message.

      1. Out of Office. While it’s turned on, OOF will automatically reply once to each sender, regardless of subject or message contents.
      2. Rules. You can construct a rule that will reply to any message that meets a condition you define in the rule. Outlook will send a reply every time it receives a message that meets the rule’s condition.
      3. Macros. You can construct a macro that behaves the same as a rule. The advantage of using a macro is that you can create conditions and take actions that are impossible to do with a rule alone. The disadvantage of using a macro is that macros are only available when the computer is on and Outlook is running. Contrast that to rules which run from the server, assuming of course that your mail is hosted on an Exchange server.

      If your mail is hosted on an Exchange server, then using a rule is probably the best approach. Rules run all the time, even when Outlook is not running. If your mail is not hosted on an Exchange server, or if you need to use a condition that is not available via rules, then a macro solution is best. However, for that to work you must have Outlook open and running all the time. If you don’t, then the solution cannot respond to messages as they are received. Instead, it will respond to them when you start Outlook.

  4. Hi
    Some great stuff on here – thanks for your generous time donation.

    I have a frequent need to categorise selective emails and file them to a folder. Category and Fold are linked. So, I could categorise and then move them, each using aright-click; or categorise and periodically run a rule to move them;

    But, being somewhat retentive about filing things I like to do them as soon as I’ve dealt with them. I’m sure its simper to do it so a button click can categorise and file selected email(s) in one go; multiple buttons for different category/folder combinations even… yet not so simple for me to succeed, I’ve tried merging various items from your site, with a startling lack of success.

    Can you help?
    Mark

    • Hi, Mark.

      Thanks!

      How many categories/folder combination would you have? If I knew that I’d be in a better position to suggest a solution.

  5. Dear David,

    Thank you so much for your sharing and help. I’ve been studying your codes practicing and learning VBA. While I play with different versions of this exporting appointments trick of yours, I created a simple scenario, it is like, after the appointment list in full detail is exported to a CSV, there’s another excel with another set of code, to search full the CSV, look for set of matches then according to the result it will gather data reference to the match and export to different CSV in different file locations. e.g. The script looking at the appointment list’s “location” column, then if result match location A, the appointment’s start time, end time, host and location these info go into folder A’s CSV file. I’ve taken example of conversation of you and another reader, about searching and editing for exact match data in cell. I’d also love to, at your most convenience, be advised by you, or maybe look at some examples in your next post of similar feature. Looking forward to your feedback. Cheers 🙂

  6. Hope you can assist us.

    We have an excel named “MASTER”
    Sheet 1 is named “ACTIVE” and is protected by password “TEST”.
    Column 2 (B) contains names (ex: Duck, Donald).
    Column 52 (AZ) has the text “ACTIVE” entered automatically, by formula, when a date is entered in column 4 (D).
    When cell 52 is changed to “DISCHARGE” need a verification message to appear stating “Are you sure you want to discharge Donald Duck”?

    If answer is yes, need Discharge text to remain in column 52 and the entire now needs to be deleted from “ACTIVE” and text pasted on the next available row of the sheet named “DISCHARGED”.

    If the answer is no, column 52 is to revert to “ACTIVE”.

    Thank you in advance for you help!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s