700 pages

A couple of days ago, Johan asked how it was possible to write almost 700 pages on the Ribbon... I figured that this was probably as good an opportunity to tell what is in the book (RibbonX - Customizing the Office 2007 Ribbon) in my own words, as well as what we were trying to accomplish with it.  Due to the fact that we weren't really allowed to talk about it as we wrote, I didn't really get to blog much about my experiences.  So here goes...

First off, there is an index and a table of contents that add to the bulk a bit.  I'm going to blame that for a bit of the inflation.  😉

The book naturally starts off with an intro chapter that discusses what is needed to customize your UI in Office 2007, compared to the way we did it in previous versions.  It's sure not as easy as importing J-Walks' table driven menu code and filling out a short survey any more!  🙂

From there we got right to the content: A full chapter just on XML, how to read it, and how to build it.  Next we described the different methods for attaching a simple CustomUI to your project using both the unzipping/zipping method, (for Excel and Word files,) as well as the CustomUI editor.  We also discussed XML Notepad as well, as it is another tool that can be used to the developer's advantage.  Both these tools require the installation of the .NET 2.0 Framework on Windows XP, so that needed to be covered as well.

Once through the XML basics, we had to give the user the basics of VBA as well, since it's fundamental if you want to get more than just moving Microsoft's commands around.  So really, there was quite a lot before we even got into working with the Ribbon.

The meat of the book is broken down to cover all of the individual Ribbon elements, from the button to comboBox to dynamicMenu, and also has a dedicated chapter on using different attributes to format controls.  Every element is provided with complete (and legible) tables that detail what attributes it has, their default values (if any), acceptable parameters and callback signatures.  In many cases, images are even provided to demonstrate exactly how certain attributes display on screen.

It was really important to me that each chapter be something that you could refer back to when writing your code.  I wanted every user to be able to get the answer to this kind of scenario... "Why doesn't my dropDown work?  Oh!  It doesn't support the attribute that I put in!"

What really added to the page count, though, was that we chose to demonstrate by example as well.  There are full examples, rife with XML and VBA, of using each element.  In 90% of the cases, we included an example in each of Excel, Word & Access.  We walk the reader through the creation of the file, as well as hooking up the pieces of code to make things work.  We really made an attempt to teach the "how", rather than just give a "this is the theory, now good luck".  I can't even begin to count the hours that I spent coming up with examples, building them, testing them, and documenting them.  There were a lot that ended up on the cutting room floor, too, some of which ended up as "CAUTION" notes in the book.

After discussing all the basic controls, we felt that it would be really useful to give some examples of using attributes to provide help to your users.  User interface design and efficiency is a bit of a passion of mine, and after all, this entire book is about creating a good UI.  We felt that drawing the readers attention to some tricks to make life easier for the end user would be pages well written.

And then it was time to move into more advanced VBA, the Office menu, QAT and contextual tabs as well.  These chapters are packed with stuff that developers will find useful, my favourite of which is probably Robert's Table Driven QAT customization.

I'll say that the hardest chapter to write of the entire book was Chapter 16, which was on deployment, but I'm really happy with the outcome.  Being an Excel geek, the Excel part was simple, and I really enjoyed it.  Tony Jollans helped me a bit with the Word side of things, and the material there is much better for his doing so.  Both of the above cover using regular files, templates and add-ins/global templates.  In addition, we discuss sharing tabs across different files using the idQ attribute here, and have some pretty cool examples in Excel and Word of doing so.

There's much more in the deployment chapter as well, including a full subsection on deploying Access databases, written by Oliver Stohr.  While deployment of a full Access file to a user with a full Access install is a breeze, Oli covers how to do it using runtimes, locking down the UI where you don't want owners of the full version to tinker with your product, and much more.  He did some great work there to be sure.

The final chapter is on Security, and details how to set up the Trust Center for both you and your users.  It ends with a discussion of digital certificates, walking the user through creating and installing certificates created with SELFCERT.EXE.

And finally, the appendices included table after table of tags, from the names of tabs, groups and commands in each application, to imageMso and keytip information.  Our RibbonX naming conventions are also provided there, as well as an Appendix that details RibbonX resources on the web for anything we may not have covered.  Wiley is also hosting all of our example files on their site for download as well.  All of the examples we create will be there, as well as some additional files.

As you can see, we tried to make this book as full and complete as we possibly could.  I'll be honest in saying that I never thought we'd come close to this many pages at the outset, but once we started, the page count just seemed to keep mounting.  I'm fairly proud of the end result, and can honestly say that I was referring back to my own material constantly when trying to customize things at work.  My only regret about this book is that we couldn't have a CD included with the PDF version of the entire thing.  J-Walk has that for some of his, and its simply an awesome bonus.  I understand the concern, though, as it could be easily passed around, but for those legitimate buyers the ability to just put the PDF on your laptop, rather than carry the book around... it's a nice bonus.  Maybe next time.  🙂

I guess to summarize it all, there are a few factors that contribute to almost 700 pages... the fact that there are so many prerequisites to customization now, the HUGE amount of examples, and the large amount of reference tables and images that you'll find between the covers.  Overall, I really hope that people find this book a valuable resource for RibbonX customization.

The full table of contents is available on Wiley's site, if you'd like to know the breakdown of the chapter structure.  And, of course, you can pick it up at Amazon.com, among others.

Okay... enough about the book.  It's time to get back to other things.  😉

I am officially an author!

I got confirmation this morning that RibbonX - Customizing the Office 2007 Ribbon was sent to the printers on Wednesday. 🙂 (I blogged that it was coming here.)


The publishing of this book, which happens officially on December 17, 2007, makes me a third generation author. Even better, though, I'm a third generation author, specializing in the field of Bedtime Reading for Insomniacs!

  • Back in 1978, my Grandmother, Herta Puls, wrote a book all about the textiles of the Kuna Indians of Panama. From my understanding she was an expert on the subject, and was fascinated by Mola's. (This involves several different layers of coloured cloth. The individual would then cut patterns into the cloth to different levels of depth, creating colourful patterns. Most of these patterns were abstract, until white man arrived on the scene and started requesting pictures. In my grandmothers eyes, this transformed the entire work of the people and ruined the style forever.) What amazes me the most about this book is that you can apparently still order it, as I found a link for it on the net. What's even funnier, though, is that in searching I also found a rant that she wrote recently. I honestly didn't think she'd embraced the internet, as she's in her 90's. Shows what I know, I guess. 😉
  • My father, Robert Puls was the world's leading expert in animal toxicology. (He retired a few years ago, which is why I say "was".) I like to summarize his job as analyzing blood and serum samples to see why animals died. The more detailed version is that he looked for deficiencies and toxicities of vitamins and minerals in the blood, and through his 30 odd years built up the definitive guides that many others in the field refer to. He has published three books in all; "Mineral Levels in Animal Health", "Vitamin Levels in Animal Health" and the Bibliographies of Mineral Levels which, if you can believe it, was as good a seller as the other two. Dad's books have even been converted into an electronic database by a company called ZinPro. If you really are an insomniac, and want something to put you to sleep, I'd highly recommend the first set. The contact information is here, and yes, the covers really are that boring! (I know, I know... the site is ugly. My parents have been bugging me to do something about that.
  • And now me. The third generation of writers that is on a topic so... well... let's just say that many people wouldn't be interested in our passions. 😉

At any rate, if you ARE into my world, an insomniac, know someone who fits into either category, or just don't know what to get someone for Christmas, pre-orders for RibbonX are already being accepted at Wiley, Amazon.ca, Amazon.com, Chapters.ca and many others resellers. If you need to have it under the tree on the 25th, though, you may have to visit a local store within the last week before Christmas.

New tool for Excel users

One of the big tools missing from my coding arsenal has been a place to store code that I've written.  Jon Peltier claims that one of his most important tools for developing is Google, and I can't argue with that.  One funny thing that has happened to me, though, is having Googled for how to do something, and the first hit was a KB entry at vbaexpress.com that I wrote!  I didn't even remember writing it actually...

At any rate, the reason I use Google many times is that it's quicker than trying to remember which file I used when I wrote something cool, and dig the file out.  I've long felt that it would be nice to have some place to store all of my code, but:

  • I'm not a fan of using the Personal.xls workbook to that end.  I wanted something that I could share across a network.
  • I didn't want to create an add-in, as I don't really need a huge workbook full of code loading every time if I don't need it.  Talk about wasting resources.

In discussions with some friends, (Bob Phillips being one,) the concept of code libraries were discussed, but nothing was readily available.  Until now...

Over the past few months, my friend Dennis Wallentin (aka XL-Dennis) has been building a new add-in called the Net Co Library, and early this week it was release to the public.

Net Co Library is a database system that snaps into the VBE, allowing you to store those key procedures for when you need them again.  You can store code snippets, procedures, modules and even SQL queries within the database.  Within those categories, you can create subcategories to organize your collected code samples.  You can even make notes that are stored with the procedures, and you can search any of these fields for keywords.  Here's a picture of the main Code Library UI:


As Dennis explains on his blog, the name of the add-in is NET, for the .NET language it is programmed in, Co for either Code or Connection, both of which is stores, and hopefully you can figure out the library part on your own.  🙂

On of the things that I really like about this is, because it stores its data in a database, I can access it from multiple locations at the same time.  To put it another way, consider the environment I run my systems in:

I run a Vista OS on my laptop and installed the Net Co Library.  I also have VMWare, and run my work PC (a Windows XP guest) as well as all my testing environments in VMWare images.  Within those images, I can map a network drive back to a shared folder on the host, which happens to hold the Net Co Library database.  With this setup, I can then use the same database between all instances.  In fact, I can even access the database on the guest while it's open on the host or vice versa.  It's just an mdb database, after all, which supports multiple users.

Overall, I'm really thrilled with this Add-in, and it's already become one of the "essential" add-ins that I will install on every system, along with MZ Tools and SmartIndenter.  If you do any amount of coding, you owe it to yourself to check it out.