I've developed an application-level add-in for Word 2007 using Visual Studio 2010 and .NET 3.5. Part of what it does is use the
Globals.ThisAddIn.Application.Selection.Range
to insert text.
However, when there is no document loaded this code fails. I could catch the exception or programmatically detect whether a document was currently open, but I think there must be an easier way...
When Word 2007 is open but no document is loaded, most of the buttons on the ribbon are disabled (that is, greyed out).
Any idea how this is achieved?
Will the add-ins hook into an event and disable their buttons accordingly?
If so, would this be the
DocumentBeforeClose
event, and could this be risky if Word is somehow opened without a document? (That is, there's no document loaded, but the event hasn't yet been triggered.)
Thanks in advance!
UPDATE:
OK, it seems like making use of the
getEnabled="MyMethod"
attribute of the XML might be the way forward, but this seems to only work for the individual controls on the Ribbon rather than the whole ribbon itself.
You basically answered your own question.
I could catch the exception or
programmatically detect whether a
document was currently open
Catching the exception is a bit nasty, but would work.
Programmatically detecting whether there is a document loaded is the best alternative.
And it's easy.
If Globals.ThisAddIn.Application.Documents.Count > 0 then
'at least one document is opened
end if
Can't get much easier than that.
Is there something else you were trying to accomplish with the stuff about the buttons on the ribbon?
Try using the DocumentChange event instead (see my answer on this thread).
Related
I’ve created an add-in that consist of a ribbon and three tabs.
Background to build:
The ribbon is built using designer and not xml. The primary use of these is to allow quick opening of various email templates.
Tab0 adds a couple buttons to the built in TabMail
Tab1 is a new custom tab with various buttons that do various things.
Tab2 is a reduced version of Tab1 for use by users of our subsidiary company but pointing to alternatively branded templates.
In the coding, Tab1 and Tab2’s visibility is set based on user AD group membership on ribbon load event. This has been tested and works.
Tab0 always is merged with the built in Home tab shows as expected.
Developers and template admins like me should see all tabs. This also works using same methods.
Current issue:
Recently and I think after a certain office 365 update (but not 100% which), Tab1 no longer shows for anyone that should see it on load. However the tab has loaded somewhere. The reason I know this is because to fix this bug all I have to do is minimise the ribbon the re-maximise. Both additional tabs are instantly visible.
Please note, I do not have to disable and the re-enable the actual add-in.
I can also confirm that the Ribbon Type is set correctly (Microsoft.Outlook.Explorer) so please, no reply along those lines either.
I have trawled the web and cannot seem to find an explanation or fix for this behaviour. I'm hoping someone has seen this before and might point me in the right direction.
To replicate, I've seen it happen by just creating a new simple ribbon project and creating a new custom tab. Then create a second tab by copying the first, giving it a diff ID.
e.g.
Ribbon on App Launch/Load - Tab01 Missing
Ribbon on minimise - Tab01 Appears
Ribbon on maximised- Tab01 still visible
Still have no idea why this happens but i have found a work around for those that have experiences the same issue.
The issue seems to affect the first custom tab only. So if you add a new blank custom tab and set its visibility to false, this inherits this bug allowing the other to function properly.
Its a bit of a dirty fix but work well.
Would still be interested in an actual fix if anyone knows one though.
This happens because you had added control to your ribbon perhaps a property to the Control which you should not.
An example is when you add a Ribbon Gallery control to your Ribbon and change its "PositionType" property from Default to another value.
This results in the Ribbon not showing.
Or perhaps you should check the last code you added to your project
In compare option inside the source control, the scrolling is bind together for both files.
I want to scroll just one of the sides while the other stay pinned also I want to avoid comparing outside on the VS.
I can't find any solution online and there is no obvious option in the VS.
I'm Using VS2015 with TFS.
Thank you.
EDIT
New feature request for microsoft was opened
Feature request
EDIT
In VS1029 Version 16.11.3 feature exist, by pressing it you can unbind the windows
In compare option inside the source control, the scrolling is bind
together for both files.
For this , I am afraid this is by designed. The same is true for my test in visual studio2019.
You could add your request for this feature on our UserVoice site , which is our main forum for product suggestions. After suggest raised, you can vote and add your comments for this feedback. The product team would provide the updates if they view it.
I'd like to run a macro that sets the zoom to 100%, something like Windows(1).View.Zoom = 100, every time ANY file is opened in PowerPoint. The files are already created, so using a template to set the zoom is not possible. How can I do this?
There isn't really a way (that I am aware of) to do this through a macro or powerpoint add-in. You might be able to do it using a custom web add-in but I don't have enough experience with that to provide an example.
After looking around there have been a few success stories. One of which is creating a custom UI element and then adding an onLoad hook to that.
Here is the thread.
Here is a link to the Custom UI Editor Tool However I had no luck in getting it to work. I believe (This is only my theory) that it is not compatible with the latest .NET framework.
If you do end up trying to do this, here is a link to the xml formatting documentation for UI elements. And a link to a little tutorial related to this.
Sorry I couldn't be of more help. This should at least get you started. If anyone else has a simpler way I would love to know as well.
I have a query on the usage of windows form in excel add-in, application level.
Objective Statement:
Display customized windows form control, similar to a way a chart is being inserted into excel
Custom Pane
I have tried custom pane add-in but it seems to be on a entire workbook level, i need something on a worksheet level
Task Pane
I can't seem to use the task pane in application add-in for excel
Windows Form Control
When I click on a cell in excel i will lose focus to the windows form, i will need the windows to be together with the worksheet, but i can't use showdialog.
Thanks for the help in advance.
From your answer it is hard for me to figure out if you we are looking at a code solution here or something more high level, so I am going to assume that you are looking for a code solution, please correct me if I am wrong.
Have you considered using an OLE object or ActiveX?
There is an example from Microsoft here, how to develop an ActiveX control. (Here is some other walkthrough that I found helpful).
Just to give you a hint how it (the example mentioned above) looks like, here is the screenshot of the compiled example that I added onto the excel sheet:
ActiveX control can be added both manually, or by code, so I could imagine that you could also provide a COM Excel Add-in that would add some buttons onto the ribbon, that when pressed, would add the desired controls onto the sheet.
In Visual Studio, you can expand and collapse code without using regions, for example in a code-behind page you can collapse methods, etc... And in an ASPX page you can collapse tags, tags, etc...
It's useful when you have a long page and you want to focus your development on a specific part. What's cool about it too is that you can close the file and reopen it and the state of the expanded/collapsed blocks is saved exactly as you left it.
Except in one instance. That state is not saved for tags in ASPX pages, where it would be most useful.
I know there are some good plugins out there for VS but I couldn't find one that addresses this issue.
Has anybody got a solution?
Before you mention custom controls, they are not always convenient or feasible when trying to keep a page short and I don't consider this a solution to this problem.
Looks like this issue will stay unresolved at this time.
I opened a bug report on Microsoft Connect, if this issue is important to you please vote it up!
https://connect.microsoft.com/VisualStudio/feedback/details/613221/expanded-collapsed-state-not-saved-after-closing-file