Outlook with multiple calendars: How to determine the selected one with VBA? - outlook

Even though several calendars can be selected and visible in Outlook, there is only one calendar active (selected by click it). How can I determine programatically which calendar has the current focus? Is there any change event available, which allows me to disable or enable a ribbon element?

Use Application.ActiveExplorer.CurrentFolder to determine the current folder.

Related

VSTO Outlook: Avoid closing custom task pane

I have a custom task pane and now I am trying to catch the close event of the custom task pane. I have seen that there is no such event, instead there is the VisibleChanged event with does exactly the same, it is raised when visibility changes or it is closed.
When user clicks on close button or select close from the context menu, I would like to display a messagebox saying it is not permitted to close it and not allow user to close it.
I have seen an approach here or this user a thread but this is causing flickering when showing it again (you can see that it is hidden and then make visible again quickly). Is there any other way to achieve this? Also where is the best place in those approaches to show the messagebox?
Custom task panes don't provide any event which is fired when the pane is about to close. There is no trivial way to get the job done, you need to implement workarounds described on forum threads. Also you may consider using Advanced Outlook view and form regions instead.
Note, Outlook form regions provide the following events out of the box:
Event
Description
FormRegionInitializing
Occurs before the form region is initialized. You can check conditions in this event handler to determine whether Outlook should display the form region. For more information, see How to: Prevent Outlook from displaying a form region.
FormRegionShowing
Occurs after an instance of the form region is created but before the form region appears.
FormRegionClosed
Occurs before the form region is closed.

How to track active screen in outlook mail using add-in

i'm running timer on task pane Add-in in outlook. when user inactive means if user switch to other tab I need to stop timer and when user back click on outlook mail, I need to resume timer. can anyone guide how to do this?
OfficeJS doesn't provide any events for that. You may consider posting your suggestion to the Tech Community at https://aka.ms/M365dev-suggestions, feature requests are considered when the team goes through our planning process. Don't forget to use the Github label: “Type: product feature request”.
In case of COM based add-ins (VSTO) you could handle the Inspector.Activate an Inspector.Deactivate events for the inspector windows in Outlook. If you need to deal with Explorer windows you may consider using the Explorer.Activate

Is TabDefault the only option for placing a group on ribbon?

After years of developing COM add-ins, I am now doing a outlook js add-in. So I am newbie to this enviroment.
I have a couple of questions regarding the ribbon architecture.
From what I have read, I believe the TabDefault is the only option for the ribbon group. I am trying to place my ribbon group at a specific location and emulate the COM add-in. For example, for my Outlook COM add-in I can place my options button that pops up a dialog on the TabMail ribbon before group GroupQuickSteps. Is the Outlook ribbon only limited to TabDefault?
I would like to design my ribbon to have one button on the compose ribbon and one button on the read (pop-out) button. Then I would have two buttons on the main ribbon (TabMail). All buttons would perform different functions. Can I define separate logic for each ribbon/window? The only example I see is that Contoso sample app. Kind of confused about the manifest and limitations. Looks like that example pops up on all windows.
Any help is appreciated.
Thanks,
Tom
Web add-ins don't support ribbon customizations you could do with a COM add-in. But web add-ins provide the ability to create ribbon commands. You can read more about them in the Add-in commands for Outlook article.
Add-in commands are supported for four scenarios:
Reading a message
When the user is reading a message in the reading pane or in the Message tab for a pop-out read form, add-in commands added to the default tab appear on the Home tab.
Composing a message
When the user is composing a message, add-in commands added to the default tab appear on the Message tab.
Creating or viewing an appointment or meeting as the organizer
When creating or viewing an appointment or meeting as the organizer, add-in commands added to the default tab appear on the Meeting, Meeting Occurrence, Meeting Series, or Appointment tabs on pop-out forms. However, if the user selects an item in the calendar but doesn't open the pop-out, the add-in's ribbon group won't be visible in the ribbon.
Viewing a meeting as an attendee
When viewing a meeting as an attendee, add-in commands added to the default tab appear on the Meeting, Meeting Occurrence, or Meeting Series tabs on pop-out forms. However, if a user selects an item in the calendar but doesn't open the pop-out, the add-in's ribbon group won't be visible in the ribbon
Using a module extension
When using a module extension, add-in commands appear on the extension's custom tab.

Outlook Add-ins closing when a new email is opened

Whenever I have an add-in open in outlook, it closes immediately when I open a different email. Is there a way to keep an add-in open while I browse through multiple emails? Or is outlook coded in such a way that forces the add-in to close every time you click on a different email?
Thanks.
As far as I understand your questions you are the user of the Outlook Add-on. If this is correct, you will not be able to change this behavior. Every time you switch the item you would need to click to invoke the add-on once again. You may also contact the developers of this add-on and request them to implement a pinnable taskpane with explanation of your business case.
Well, if I was wrong and you are the developer of this add-on, you should look at pinnable taskpane in Outlook. This would cover exactly the case you have described. What you would need to do is just support VersionOverrides v1.1 schema in your add-on manifest as well as register and implement the Office.EventType.ItemChanged event handler in your add-on JS implementation.

CustomTaskPane Visibility in Outlook

I have a custom TaskPane in Outlook. When the user toggles the visibility, I record it in the settings object so that the next time Outlook starts it will be shown/hidden as the user left it.
CustomTaskPane.VisibleChanged is raised in each of the following scenarios
The user clicks the X in the top right corner of the task pane
TaskPane.Visible is set in response to the user pressing a toggle button in the ribbon
The user presses the File menu button on the top left
The first two ways, the user clearly meant to hide the task pane. The third way the user was just trying to go to the menu screen (perhaps on their way to hit the Exit button).
Question
Is there anyway to determine that the event was raised because of the File Menu? Any way to programatically determine if the File Menu is currently open?
Here's what I mean by the File Menu Screen:
The Backstage UI provides two callbacks that can be used for tracking when the File menu is open and closed:
onShow - The Backstage view is displayed which triggers the OnShow callback procedure.
onHide - when the Backstage view is not longer visible.
The onShow attribute and the onHide attribute of the element can point to code that performs that kind of action.
<backstage onShow="OnShow">
See Customizing the Office 2010 Backstage View for Developers for more information.

Resources