Office 2007 Ribbon Programming How-to - ms-office

I'm interested on how to get the old menus back for Office 2007. I know you can buy add-ins that do this, but I'm more interested on how these are done? I want to implement this at home and just need to be pointed in the correct direction!
Thanks!

These programs don't actually restore the old menu system, they modify the current Ribbon and then write the code to mock the old design.
This is where you need to start in order to modify the Ribbon.
http://msdn.microsoft.com/en-us/library/aa942866%28VS.80%29.aspx
I doubt the Ribbon is going to go away, so you probably will be better off taking the time to get used to it. I have, and now I much prefer this style menu system. In fact, I have been looking at code to implement this style in applications that I build.

Related

VBA Ribbon validate imageMso

I'm creating a custom ribbon in Excel, and I'm using ImageMso's for icons. I downloaded the full list of Icons from Microsoft, and tried to create a menu that displays them all for me to choose, but some of them are not displaying.
Is there any way to validate if an imageMso code does not work with the current version of windows, and display a placeholder in it's place instead of a blank icon?
Thanks,
Daniel
In my experience the short answer is no, but I also haven't investigated or attempted to resolve it with any great tenacity. If it doesn't show up I will retry with a different icon.
Note that I am not an expert by any means, but have been playing around with customUI for a while.
There is a great free Add-In I found that helps with speeding up the whole process of identifying suitable icons. It's worth checking it out.
https://www.spreadsheet1.com/how-to-use-imagemso-icons-in-excel.html
Josh
PS. I hear this is particularly an issue going into the Office 2019.

Sign in to a 3rd party excel add-in from vba

I have a 3rd party ribbon (SNL Financial) add-in installed in Excel (2010 version) and I would like to have some vba code to automatically "sign-in" to the 3rd party ribbon. I've tried simply "recording" a macro that clicks on the ribbon and then clicks on the "sign-in" button, but no code shows up in the VBA macro recorder. Any ideas?
There is no universal "sign on macro" or method to login to all Excel Add-ins. Your best bet is to leverage something the developer has already built. Assuming you've already searched the web unsuccessfully, you can search your VBA Objects Browser which would be the most likely place to find any VBA options that a developer will allow you to use.
To do this, from the VBA editor screen click:
Tools / Reference. Make sure whatever add-in you have is checked in this list. It might not be the exact name so you may need to do some research to find it. Click okay to return to the VBA editor.
Click on VIEW / Object Browser. Hopefully you will see in the drop down menu that starts with <ALL LIBRARIES> the name of your add-in.
In the object browser, with you add-in selected, you should have access to view all API/MACRO tools the add-in has already built. Some of them may be intended for your use, and some may not. You might get lucky and find one you can leverage or take the code and research more on google for a solution.
Bottomline, there is no direct answer to your problem, but the above instructions would be the best place to start looking for your custom solution. Good luck.
Extra Bonus just for your particular SNL issue
For technical support contact SNL Support, visit this page:
http://sc.snl.com/SNLDSWebService2/Download.aspx

Modifying the screen of existing Direct2D application

This question is related to: Which API Microsoft Word (Office 2013) is using the paint the screen, which was left unanswered.
I have an Office plug-in (native C++) which is fairly involving with Office. Using hooks I'm modifying the client area of Office application.
Things were working great for me up to Office 2010, hooking WM_NCPAINT, and using GDI method on the Office Window.
But Office 2013 uses Direct2D, DXGI, and DirectWrite. On Windows 7, if I draw something on the screen - it gets erased the next time the cursor blink. On Windows 8 - I don't even have access to the screen.
Currently, my thinking is to hook ID2D1DeviceContext::BeginDraw, ID2D1DeviceContext::EndDraw - and on last function, just before delegating to the real function, I will add my stuff. Another idea is the hook IDXGISwapChain1::Present1. Problem with both these methods that I've hard time identifying what is going on above.
I'm even thinking even a different process (or GDI based window - if possible) on top of the client area I want to decorate, with the majority of the real eastate being 100% transparent. Problem with this solution are issues like keyboard focus and mouse click.
Any tip or suggestion will be appreciated. Any tool (the Spy++ for DirectX) will be appreciated. Does DirectX (specifically Direct2D) has documented extensible or plug-able story, I'm not aware of and could use? Is there anything in Kernel Mode I'm missing?
Hm dont know exactly how that works on Direct Draw, but i hooked once the EndScene function for Direct3D and added some stuff to the scene before the real EndScene could be executed.
I made a little video that shows that:
http://www.youtube.com/watch?v=ZFshqIEaLBc
Here's my advice: don't do that. Any of it. If you find yourself having to hook and hack into the host that deeply, it's a clear sign that you just shouldn't be doing that. Find another way to draw what you need, or change your UI design so that it fits in with what Office already accomodates. Even if you assume it's possible to get this working, every time Office is updated (patch, service pack, new version) you will be at high risk of all your stuff breaking, with no guarantee that you'll be able to get it working again.

Enable built-in Office ribbon buttons which are disabled by Excel/PPT

It is well documented how built-in ribbon buttons in Microsoft Office can be repurposed (here for instance), e.g. the Copy button. However, I am not aware of any method to take full control of the enabled state of repurposed built-in controls. For me this poses a problem since I would like to implement some extended functionality in Excel and PowerPoint for which in some cases the alignment buttons make sense. But they are disabled by Excel/PowerPoint so repurposing them does not work.
Disabling built-in button that would be enabled by default is not a problem. Defining a getEnabled callback for the built-in button seems to do the trick - problem solved.
But how to enable built-in ribbon button that would be disabled by default? (getEnabled does not help here)
I suspect there is no "VBA/VSTO way" to accomplish the task? Do you think it would be possible using COM, e.g. via IAccessible? So far I have only found ways to enumerate, select and invoke the button commands but not to change their state.
As the question got a few views I only wanted to confirm that there is no supported way to achieve what I wanted to the best of my knowledge. Neither the ribbon interface nor IAccessible help here. This is unfortunately the best answer I can give.

SharePoint 2010 - My Sites, modifications to navigation ribbon at the very top

After much online research and getting close to what I am looking for by hacking it together (ie. modifying templates and other files, exactly what every expert out there appears to advise against in terms of SharePoint customization) I have decided to go ahead and post my issue here to see if anybody has ever had any experience with this.
In essence, I start off with a plain My Sites host. I would like to keep the My Profile and My Content pages, and add a bunch of new content of top on that. For us, simplicity is of utmost importance and so when I created a new Web Part Page and noticed that it added an additional ribbon under the navigation menu, I decided that it had to go. This is what it looks like out of the box:
With ribbon
Notice that at this point I have already made a few modifications, such as removing the My Site link that by default appears all the way to the left of the other options. This sadly was accomplished in a very brute-force way.
Now, here is the ribbon-free navigation bar, which is just what I want to be able to design without making system changes that I will regret in the future (and that may be easily overwritten by a CU or hotfix)
Without ribbon
So I guess I should make this clear, I don't want the navigation gone, just customized (ie. no My Site string to the left of my options, no Site Actions drop-down for read-only users) and the Browse/Page ribbon that gets added by default everytime you create a new page, well that one just needs to be gone completely, as shown in the second screenshot.
I have read all about hiding ribbons (which just hides the whole thing, including navigation), customizing ribbons (no success in accomplishing this type of basic navigation after trying them out) and simply don't know what to do anymore.
Maybe I am just taking the wrong approach by modifying something instead of just creating it from scratch, at the end of the day it is nothing but a static navigation bar common to all the pages with the special current user drop-down all the way to the right, then if a user has write permissions, she would also get the Site Actions drop-down under Home, that's it.
Hopefully an answer to this question will help others as well who are looking to simplify their SharePoint My Sites host a bit, as out of the box the number of web components that users are presented with might be just a little too overwhelming for your everyday employee, at least in the industry that we operate in.
Anyway, thank you kindly in advance, I look forward to your replies. Do let me know if there is something that is not entirely clear from my explanation :)
If you take away user's Create Personal Site permission (http://technet.microsoft.com/en-us/library/cc262500.aspx) in your User Profile, the "My Site" link will go away.

Resources