Monday, August 01, 2011
I'm happy to report that the Microsoft SharePoint Enterprise Content Management (ECM) Implementer's course is live. I wanted to take a moment and talk about the course that is 15 modules long – and designed so that you can consume it via the videos that are posted or as an instructor lead class. The work done on the course has spanned a year, has involved MVPs, Microsoft product and program managers, and a host of experts to design the course content and to provide feedback along the way.
A year or so ago, Paul Andrew, and I started talking about a ECM course that was 300 level. We created an engagement to build the course outline for the course which included several brainstorming and review sessions. During that scoping and design engagement we had meetings with SharePoint experts – including both MVPs and non-MVPs, product team members, and members of Microsoft Consulting Services. It wasn't one meeting but a set of meetings starting with brainstorming and a set of meeetings to refine the outline. Once we got to an outline of topics we designed a set of instructional modules to support that outline.
The process we used leveraged the best things of what we had seen with the Microsoft Learning process, while recognizing that the course was designed to educate the market – not to drive to certify people for a technology. I sincerely believe the process for developing the outline lead us to a set of important activities for anyone implementing an ECM system.
The writing was a separate engagement and as the lead author I was thrilled that the authoring team we put together for the course included four MVPs:
I also got some help from Kevin Dostalek for one of my modules. In addition, Spence Harbar was our technical editor. Spence is both a Microsoft MVP and a Microsoft Certified Master – not to mention one of the most knowledgable people on SharePoint on the planet.
The immense amount of talent I was able to draw from for writing the course was awe inspiring. I can't tell you how big a deal it is for me to get such a talented team on the project. There are two challenges you have in assembling an authoring team – experience with the topic and experience with writing. The team is comprised of accomplished authors and communicators and with the editing team – including myself – I believe we ended up with some truly great content.
In short, I feel like we got the right topics in the course and we created the instructional content to make sure that the topics are covered well. I won't tell you the course is perfect – no course ever is. However, I will tell you that there's a great wealth of experience that's been poured into creating the content.
As a point of clarification, the course is an implementers course – that means server administrator (or records manager) – it's not a development focused course. In 2009 and 2010 I worked with the Patterns and Practices team on the SharePoint Guidance which is all for developers. There's absolutely a developer story for ECM, however, there's a ton of things that need to be done on the server administrator side of things – these feel like the more critical items for most ECM implementations.
I am absolutely commited to the quality of the course. If you've got feedback about the content you're welcome to send it to me. If you're looking for an instructor for the content for your organization, please let me know. I'll be working with selected clients to teach the course in its 5 day instructor lead form.
Sunday, July 31, 2011
Professional, Book Review
One of the best things about 42 Rules of Employee Engagement by Susan Stamm is that because it's 42 separate rules – so you can consume the material a few pages at a time. The book for me was a sort of flash cards, a collection of bits and pieces that I'd learned elsewhere that I was in some state of forgetfulness about. Although my interest wasn't in engaging the employees I manage – I still found some nuggets of useful information about how to engage employees – and perhaps more importantly what breaks employee engagement.
The book ends with a list of references to other books that might be useful to the reader. In fact about 15% of the book are these references to other books and tools.
Here's the list of rules covered in the book:
- Rule 1 Rules Are Meant to Be Broken
- Rule 2 Get "Under New Management"
- Rule 3 Begin at the very Beginning
- Rule 4 Listen, Listen, Listen
- Rule 5 Be a Hands-On Manager
- Rule 6 Be a Low-Tech Communicator
- Rule 7 Everyone Needs Feedback
- Rule 8 Keep Learning
- Rule 9 Allow Your Team to Grow
- Rule 10 Support Your Team Members When Needed
- Rule 11 Relationships Determine Results
- Rule 12 Sharing Builds Community
- Rule 13 Your Beliefs Drive Results
- Rule 14 You're Still the Boss
- Rule 15 Everyone's Not Like You (Thank Goodness!)
- Rule 16 Be Direct with People Who value Results
- Rule 17 Be Enthusiastic with People Who value Enthusiasm
- Rule 18 Be Accepting with People Who value Sincerity
- Rule 19 Be Reliable with People Who value Quality
- Rule 20 Build Self-Esteem When Discussing Performance
- Rule 21 Involve to Engage
- Rule 22 Use Your Head
- Rule 23 You Don't Have to Be the Smartest Person in the Room
- Rule 24 Compete with Your Competitors
- Rule 25 Get Out of the Shower
- Rule 26 Turf is for Stadiums, Not Teams
- Rule 27 Right Actions Bring Engagement
- Rule 28 Leave Your "Good Parenting" Skills at Home
- Rule 29 Leave Your "Bad Parenting" Skills at Home
- Rule 30 Expect Exceeded Expectations
- Rule 31 It Only Takes a Minute
- Rule 32 Recognize Good Performances
- Rule 33 Problem Solving Is a Team Sport
- Rule 34 Help Your Team Accept Change
- Rule 35 He Who Has the Gold, Rules
- Rule 36 Build Acceptance, Reject Prejudices
- Rule 37 Honesty Is Always the Best Policy
- Rule 38 Give It Your All
- Rule 39 Know What You Want
- Rule 40 Engaged Teams Get the Facts
- Rule 41 Ask, Don't Tell
- Rule 42 These Are My Rules, What Are Yours?
Sunday, July 31, 2011
My wife purchased a puzzle for our family, and her Aunt and Uncle that we're staying with on vacation to do. The puzzle consists of nine square pieces each of which contain half of an image of a cat on each side. The completed puzzle is a 3x3 grid of the pieces where all of the cats match up. After an hour or so of trying to randomly try pieces and combinations, I decided to come up with a plan that would definitively solve the puzzle. I decided to break the problem down into a set of comparisons the computer could do – and write a program to solve the puzzle.
Before I get to far, yes, I was informed by my wife that this was cheating. However, I'm not sure I agree (feel free to provide your comments if you would like). I don't agree because puzzle solving should be about using all of your skills to be able to create the solution – not just simple trial and error. If you believe I cheated in finding the answer, that's OK. If you prefer to think, as I do, that what I did was find an ingenious way to solve the puzzle read on.
Since I'm not an expert in image recognition, I decided the first step was to inventory the pieces and convert the images into something easier to handle. I decided that each cat had a left and a right side of the image. Since there were four different cats I'd number them 1 (Black), 2 (Orange), 3 (Gray), and 4 (Tan). I would then label the left side of the cat as the A (or true) side and the right side of the cat as the B (or false) side. Then I could create a inventory of each piece with it's numberic identifier for the piece (which I randomly assigned) and the number for the cat image on each side: 3b, 2a, 4b, 1a… With this conversion from physical objects into numbers in hand I was ready to create some classes and structures.
I decided at the most basic I was matching sides so I created a class with the Cat Number and Cat half variables. The cat number had to match and the cat half had to be opposite. Because of this I used a boolean for the cat half. I also created a method for the class called match, which took in another puzle side and returned a simple true-false to indicate whether the sides could be matched together. One key here is that I returned true of there wasn't a piece on the other edge. I knew there wasn't a piece because the cat number was zero.
I also needed a puzzle piece to contain the piece's identifier and the sizes of the piece. I also created a puzzle placement class that considered the orientation of the piece – since pieces could be rotated you didn't know which side should be up. Finally I created a puzzle solution class to hold attempted solutions. The puzzle solution class had a method to return whether two solutions matched. This was used to prevent solutions from being tried multiple times by the program.
The main code of the program consisted of some lines to initialize variables, followed by a set of nested loops. The outer loop was a solutions loop where I recorded each tested solution. Inside of that I had loops for x and y positioning and inside of that pieces and inside of that orientation. Through these loops I'd test a piece at a time in each orientation to see if I could get it to match on all four sides. One key here was my array of positions was actually five by five and not three by three. Why? I kept a set of empty positions all around the pieces so that I didn't have to worry about running into array bounds issues. It was wasteful of memory to be sure – but it's efficient from a coding perspective and given this was quite literally throw away code, it seemd like a reasonable thing.
After working out some of the logic and a few minor logic bugs I ended up with a program that tried 283 solutions before finally settling on and displaying the answer on how to solve the puzzle to me. I should say that the answer was displayed instantaneously – at least to me it was instantaneously. I'm sure there were some number of milliseconds involved but to me they weren't even measurable. I tested the solution on the real puzzle and it worked.
I ended up having about an hour in the code – and I'm certain that solving the puzzle by hand would have taken much longer than this given the complexity of the problem so I was happy with my puzzle solution.
Clearly you can't use this technique to solving every puzzle. The typical jigsaw puzzle doesn't lend itself quite as nicely to this sort of problem – but it was a fun exercise to convert a real world puzzle into an algorithmic one that the computer could solve.
The completed puzzle looks like this:
If you want to look at the code it's available here.
Friday, July 29, 2011
Professional, Book Review
Sometimes you can't control the environment you're in. If that's the case and you've got to reward folks, I'd strongly suggest you pick up 365 Ways to Motivate and Reward Your Employees with Little or Not Money by Dianna Podmoroff. I know that's a qualified recommendation, but let me explain. The book does an absolutely excellent job of providing techniques for motivating employees. It's a great book to keep you thinking about different approaches for "gimicks" and "games" to motivate employees. There are some truly great ideas in here to inspire you to take some action to motivate employees – whether you're in HR or not. The book recognizes all of the key factors of motivation, that you can't create motivation you can only foster it. The book struggles with the same concepts that managers everywhere struggle with – "How do you awaken employee's natural desire to be better?"
My real struggle with the book is that it's an "evolutionary" rather than "revolutionary" approach to the topic. It's not that this is wrong, it's the right answer for most situations, however, I was looking for more of how you can drive change in an organization – to refocus the organization to enabling the employees to be better – it's just that this book doesn't do that. The book does, however, still get to keep a space on my virtual bookshelf so I can refer to it when I'm looking for ways to plug people in.
Thursday, July 28, 2011
Comedy, Book Review
The New Comedy Writing Step by Step by Gene Perret is a great book that helped moved me from beginner to intermediate. I loved Greg Dean's book, it got things started. However, there were some great exercises to help kick start the writing process in this book. Unlike Dean's definitions, Perret's definition for what makes a joke is a bit broader – "A joke is anything that gets a laugh." That definition was helpful to allow me to break out from the formula provided by Dean and move into other kinds and types of joke structures. I really appreciated Perret's perspective that comedy can be taught. There are folks in the comedy community – particularly those who learned from the school of hard knocks who don't believe that comedy can be taught – or learned from techniques.
I particularly realized that some of the things that make people laugh are just funny observations. For instance, men buy shoes based on type (sandal, boot, tennis shoe, dress shoe). Women buy shoes by outfit or color – they're trying to match an outfit. In text this is boring. In a room it never fails to get a laugh as people realize how men and women are different in ways that we rarely think about.
The other BIG thing for me out of this book were ideas for getting the ball rolling on writing comedy. For instance, captioning photos with funny captions. You can go on Flickr and download a random set of community commons images and caption them. It's great fun because you never know what sort of caption you might come up with. For instance what caption would you put on:
© CC Alexander von Halem
I captioned that one "God's Grenade." There are other silly little ideas for exercises – but they did get things going.
There's a ton of other good things like awareness that jokes release tention, ideas for focusing on emotion, etc. If you've got the basics and you're looking for a book to move you forward, The New Comedy Writing Step-By-Step may be for you.
Wednesday, July 27, 2011
Comedy, Book Review
What makes a joke? Well according to Greg Dean, it's surprise. In Step by Step to Stand-up Comedy Dean lays out how jokes are fundamentally about causing the audience expect one thing while delivering another. Of course,what you surprise them with must be related to what they assumed. In short form, a joke is two stories that are connected. The trick is to get the audience to think of the first story while the commedian finishes with the second. While I think that there are other definitions for what makes up a joke – and even more about what makes funny – I like Dean's definition because it's easy to work with and create material. You take anything that can mean two things and you can make a joke out of it.
Dean walks you through a process of creating jokes by looking for the places where you can have two premises that can come out of one idea. The process is somewhat mechanical – but that's sort of what you want when you're beginning. It is something that you can teach, practice, and perfect.
Beyond the introduction to jokes and joke writing are guides for assembling the jokes into a routine, practicing, rehersing, and performing. These sections are very helpful if you need to know how to practice and prepare – for me the material was mostly review since I do that sort of thing for my regular presentations. So while the material was good, it wasn't new to me.
From my perspective this was singlehandedly the most effective joke writing book for beginners. I'd say that this provided tons of insight into the process that I can use – even if I don't follow the process precisely. If you're trying to figure out how to write jokes Step by Step to Stand-up Comedy is a great place to start.
Wednesday, July 27, 2011
Professional, Book Review
I've been working on crystalizing my thoughts on creating adoption and engagement. As a part of that I've been looking for frameworks for creating change. One of the models that I was investigating was John Kotter's 8-step model that's laid out in his book Leading Change. I decided that it was worth getting the full story so I read the book. The model in summary is:
- Create Urgency
- Form a Powerful Coalition
- Create a Vision for Change
- Communicate the Vision
- Remove Obstacles
- Create Short-term Wins
- Build on the Change
- Anchor the Changes in Corporate Culture
There are three key things that were important to me in reading the book – in addition to the detailed look at each of the individual bullets so I could fully understand what he meant. First, was that there's a tendency to skip past the first steps, the preparation, and try to leap directly to the end where they can see the impact of their work. (OK, not to the very end because most folks don't do the final step to anchor the changes). The problem with this is that it's the preparation that makes this change work. Skipping right to the end just doesn't work – unless the problem is small. Despite this I've seen folks struggle over and over again to not do the background work necessary to facilitate the change.
Second, there is a difference between management and leadership. It's not a new idea. However, it struck me that the difference between management and leadership is like I talk about how server adminstrators and developers are different. Server administrators are focused on keeping things running. Developers are focused on improving functionality – which means change and change is not good for keeping things running. Management is about controlling things – orchestrating them to make them work. Leadership is more long term, focused on change, and where the organization should be in the future. Kotter also makes an interesting point that both leadership and management are necessary – and are rarely found in the same individual.
Third, the concept of lifelong learning was essential to leadership. Kotter isn't the first to have said this. Malcom Gladwell talks about the value of meaningful practice in his book Outliers. One of the statements from Leading Change is "Lifelong learners take risks. Much more than others, these men and women push themselves out of their comfort zones and try new ideas. While most of us become set in our ways, they keep experimenting." I'd say this is true, however, I'd qualify that most leaders I've met don't classify the things they're doing as risks in the same way others do. They will say something like "I was just trying new things." Most folks believe that to be inharently risky but most lifelong learners don't see it that way. It's just normal operating procedure.
If you're struggling with driving change in your organization (like SharePoint Adoption/Engagement) Leading Change is worth a read. It will give you insight into the process.
Wednesday, July 27, 2011
I mean it, I am a comedian. I'm not speaking figuratively. While I can't call myself a professional comedian yet, because I've not been paid solely to be funny, I can say I'm officially a comedian. Let me give you the back story, what it was like, and what it means.
Several weeks ago I made a decision to take a comedy course. The decision was driven by a desire to get better at my presentations. However, there wasn't a specific thought in my head to find a comedy class. It just came across my desk and I decided to jump on the opportunity. The idea for me was that the presentations that I've seen that were the best were ones where comedy was woven in. I used comedy in my presentations – many folks commented about my presentations being fun and humorous. However, for me I always felt like my comedy was haphazard. I felt like my comedy was catching 30% of my audience – if that. Of course, each joke caught a different 30% so I'd cover most of the audience.
So I paid for my course at Morty's Comedy Joint. The facility is a little more than a mile from the house so it's really convenient.
As I have told people about the course one of the most persistent statements has been "I could never do that." I'll honestly say that I don't fully understand the comment. I understand the fear of being in front of people (better now than before as I'll explain shortly) but my desire for new experiences and learning is more powerful than my fear. When I paid for the course I really wasn't thinking about the fear of being on stage – I was thinking about the new learning I would get.
The first experience was a little concerning. It didn't feel like things were put together well. I found out later that this was their first course so it's no wonder why it was a bit iffy at first. Todd McComas was our first instructor. He's been doing comedy for a bit more than a year professionally – which as an instructor initially made me uncomfortable. However, Todd's a great guy and good at putting things together. The second week Chris Bowers (who is one of the owners of the club) joined us. Bowers gets funny and is always positive. That makes it easy when you've got a class of ten people who have no idea what we're doing.
The groups of folks in the class included an actor, a college professor, a 3rd store stocker for a grocery store, a medical equipment manufacturer buyer, an unemployed former-airline worker, a nurse, and I don't remember what the rest did. The goals ranged from a being in standup to no goals for the course whatsoever. Some received the course as a gift and others bought it for themselves.
Despite this being the first running of the course things came together and we set to the process of learning the craft.
First up for the course was joke writing. There were some good exercises to get us started. Stuff like, "things that people don't know about you" or "things that you think are interesting about you." From there we would start to create jokes and work that into a bit. I found that the joke writing didn't really make that much sense at first. I then got the book Step by Step to Stand-Up Comedy by Greg Dean. It provided some structure for joke writing, what makes it funny, what you need to do to write a joke. There's more to the book than joke writing (I'll do a book review on it later) but for now that's the important part. It unlocked a part of my thinking about joke writing. I also found some tips in Comedy Writing Secrets by Mel Helitzer. (Again book review later).
One of the things that Bowers and Todd drove into us was drawing from our own experiences and writing from that – I really appreciate that direction. They also shared that there are really two different ways that people write material. The first way is people write things down everywhere they go. They take funny ideas and experiences and they will later turn them into jokes. The other approach is sitting down and writing material. No one way is right and perhaps everyone does a bit of both. My observation was that I'm a production writer. By that I mean I can write articles, books, etc., by forcing myself to do it. Some people can't do that. I found that writing jokes wasn't fundamentally different than writing anything else – at least for me. I can sit down and production write jokes if I need to.
Before I get too far, I should say that comedy is an art form. However, it's built on a set of fundamental skills and an understanding. I wouldn't want to minimize the artform by minimizing it to a set of fundamentals any more than I can minimize the work of great painters to paint-by-numbers. The books that I refer to here won't get you to the level of expertise that a professional comic displays – however, they'll give you a framework from which to work – which was what I was looking for.
Being on Stage
I honestly didn't expect to have any trouble being on stage. Speaking a dozen times a year nationally with 2-5 sessions per engagement puts me in front of crowds 30-50 times per year. That's just the national events. Locally I'll probablydo another half dozen to a dozen presentations. I really don't worry about getting on stage any more. If I'm doing presentations for computer topics, it just doesn't get my heart pumping. I thought that doing five minutes of comedy would be like rolling off a log for me. However, I was wrong.
There were some circumstances before I walked on stage where one of my classmates shared something disturbing with me. I was deeply saddened – and yet I had to partition that off from what I was about to do. In a regular presentation that would have been trivial but it wasn't this time. I walked on the stage at an open mic with more adreneline pumping through my body than had in years. My feelings clearly did not like my trying to control them. With that much adreniline I knew that I couldn't trust my sense of timing. I had to read and measure the audience for reactions. I do it all the time as a part of my presentations. In fact, it's the way I control the timing of my presentations. I got on stage and couldn't see anyone. You can't read people's faces for timing if you can't see them. If I wasn't wound enough, I realized that my primary fall back mechanism for managing timing was not going to work. At this point, I dropped into my last possible option which was to plow through the material with whatever I could manage for timing.
That wasn't going to work anyway but it didn't help that the mic cord dropped out of the microphone during the high point of the routine. I sort-of recovered. But through the entire thing I couldn't hear a single laugh. Nothing. It was like I was presenting in a black hole. I couldn't see anyone. I couldn't hear anyone.
When I reviewed the audio I found they were laughing – not as loud or as long as I like but they were laughing – and it was my first time ever on stage. Certainly I had room for improvement. Our graduation show was better. You can look at a recording in WMV or MP4 format.
Before I go there was a huge reading list for the class. I mentioned two of the books above, but I've read several books through the course. Some of them were biographical and some were instructive. A few of these I've not quite finished since in six weeks there were seven books I was trying to read. I mentioned the first two instructive ones above, there relisted here for completeness:
On the biographical list are:
In general I listed the instructive books in a recommended reading order. The biographical books you can read in any order though I listed them in a slightly progressive order. I'd say that I personally didn't get a ton of specific things from the biographical books – but it did give me a flavor for the culture of comedy. This was a lot of reading for the class – and honestly most of it was unassigned. It was what I needed to get my head around what we were doing. The class itself recommended three of the books above – and one more I didn't read.
The Effort and the Return
The amount of effort I put into the class was certainly more than I expected. Just looking at the reading list you can see that there was a ton of time spent. However, that's not the whole story. I'd spend another few hours each week working on material, refining it, etc. After the first few weeks I started attending a writers workshop at Morty's and sitting through the open mic (and performing once). The writers workshop started at 5:30 and the open mic was done by 10:15 or so. If I had to estimate I'd guess the investment was over 100 hours.
The question is, so was it worth it? Did I learn what I set out to learn? The answer is a qualified yes. No six week course no matter how good or how much extra effort you put into it will make you the funniest person alive. I feel like I've got the tools I need to make my presentations better. I feel like I can better put toghter jokes for inclusion in my presentations.
Comedy in my Future
One of the questions I get now that the class is over is "Will you keep doing standup comedy?" The answer is I don't know. I do know that one of the hardest things about comedy is the inability to precisely predict how an audience will react to a joke. There are a ton of subleties that make the joke work or not work – but beyond that the state of the audience (whether they've been warmed up or not) and their experience can turn no response into a roar of laughter.
As I have time I'll try to perfect my delivery skill and work on how to create material that works regardless of the audience. I'm likely to do a few more open mics and I'll probably try to do some material before my presentations (because I'll get a lot of time with my target audience that way.) I'm thinking I'll start a routing 5 minutes before my normal presentation starts.
In short, we'll see but I expect I'll continue to work on this for a while.
Thursday, July 21, 2011
At the SharePoint Users Group of Indiana (SPIN) yesterday, I delivered a presentation called creating SharePoint Adoption and Engagement which talked about a ton of different psychological and modivational approaches designed to help folks drive better adoption – or engagement – in their organization. During the presentation I was referring to books so much that I was asked to list out the books I was referring to, so they appear below:
- Drive, Daniel Pink (Review, Amazon)
- Outliers, Malcom Gladwell (Review, Amazon)
- Blink, Malcom Gladwell (Review, Amazon)
- The Tipping Point, Malcom Gladwell (Review, Amazon)
- The Time Paradox, Phillip Zimbardo and John Boyd (Review, Amazon)
- Peopleware, Tom Demarco and Timothy Lister (Review, Amazon) [Marcy, thanks for the reminder]
- Leading Change, John Kotter (Amazon)
- User Adoption Strategies, Michael Sampson (Amazon) [I didn't directly reference this book but it's a good "cookbook" of strategies]
I'll get reviews for the last two books up "soonish" but the others have reviews so you can get a brief summary of the core concepts behind the books so you can decide which ones to read first.
Sunday, July 17, 2011
Sometimes I want to see information graphically. It's not that I can't read spreadsheets but there are times when it's just not the best way to see patterns of organization. The visualization tool I use for outlining and Mind Mapping is MindJet's Mindmanager. It works great when I'm creating mind maps or outlines from scratch but I recently ran into an issue where a customer gave me a table of data including the folders from their existing Enterprise Content Management System. I wanted to visualize the structure so that I could figure out where they were being inconsistent in their organization. Unfortunately I ran into a snag. Mindmanager doesn't have a direct import of a spreadsheet into an outline. There's one guy online who's got a process that routes the information through Word into Mindmanager. Unfortunately this blew up Mindmanager when I tried it – and Word was getting somewhat tempermental because it has you setting heading styles into cells in the table.
After trying a dozen or two different approaches (including XML, Access, etc.) to get a workable outline out of my table I finally threw my hands up and wrote some VBA script that will take a Word document with a table in it and convert it into a document with the appropriate text in headings styles. This is exactly the type of document that Mindmanager expects (since that's what it creates when it exports.) So I ran the VBA script and got exactly the map I was looking for. I just wish I had settled on this approach before wasting two hours trying everything else.
I've included the script below. All you need to do is paste it into your visual basic editor and then run the method. It only processes the first table in the document because I figured you could copy out the table you needed and have it process just that one table. It also turns off screen updating while it's running to improve performance. Iterating a ton of cells (5000 in the sample I used) takes a while. I'd let the script run for 10 minutes or so for larger lists before starting to get worried about it having locked up. (It processed in about 5,000 cells in 5 minutes on my laptop.) When it's done save the file and open the file in Mindmanager. It will open the file and show the outline.
As with all my public code, it comes without a warranty. If you believe that it's useful, please don't distribute it directly, link folks to this post to get it. I do maintain all rights on the code.
' Get Table
Dim myTable As Table
Set myTable = ActiveDocument.Tables(1)
' Create New Document
Dim outDoc As Document
Set outDoc = Application.Documents.Add()
Application.ScreenUpdating = False
' Copy Cells
Dim colCount As Integer
colCount = myTable.columns.Count
Dim lastValues() As String
ReDim lastValues(1 To colCount)
Dim myRow As Row
Dim rowIndex As Integer
For rowIndex = 1 To myTable.Rows.Count
Set myRow = myTable.Rows(rowIndex)
ProcessRow myRow, colCount, lastValues, outDoc
Application.ScreenUpdating = True
Sub ProcessRow(ByRef myRow As Row, columns As Integer, ByRef lastValues() As String, ByRef outDoc As Document)
Dim colIndex As Integer
For colIndex = 1 To columns Step 1
ProcessColumn colIndex, columns, myRow, lastValues, outDoc
Sub ProcessColumn(colIndex As Integer, maxColumns As Integer, ByRef myRow As Row, ByRef lastValues() As String, ByRef outDoc As Document)
Dim cellValue As String
If (Len(Trim(Selection.Text)) > 2) Then ' 2= UTF-16
Selection.MoveEnd wdCharacter, -1 ' Column End marker
cellValue = Selection.Text
cellValue = ""
lastValues(colIndex) = ""
If (cellValue <> lastValues(colIndex)) Then
' Different, write it out
Selection.Style = ActiveDocument.Styles("Heading " & colIndex)
lastValues(colIndex) = cellValue
If (colIndex < maxColumns) Then
Dim clearIdx As Integer
For clearIdx = colIndex + 1 To maxColumns
lastValues(clearIdx) = ""