Printing Excel Reports via a Word Document

Share

Facebook
Twitter
LinkedIn

Printing Excel Reports via a Word Document

Using Microsoft Excel & Word

This post will detail the process of establishing a simple database in excel and then linking that to a Standard Report in word and saving the data as a new Word file.

Why use Word?

Some organisations will only accept files in Word format and may have specific formats which are used internationally (International shipping I’m looking at you!)

In these cases although you may be able to setup an Excel file to look exactly like its Word equivalent. But if they wont accept it…

You have to change.

Requirements:

+ A database source in Excel
+ A Word file (to be used as a template, not to be confused with a Word template)

The Process

The process is simply a matter of:

+ Setup a Control sheet
+ Setup a Transfer Sheet
+ Setup a Word template
+ Run the Report

This process will be explained step by step with the help of a worked example:  2007/10 Sample or 1997/03 Sample

This tutorial will only be using the 2007/10 files as examples but feel free to follow along if you are using previous versions.

The 2007/10 Sample has been tested on both Office 2007 & 2010
The 1997/03 Sample has been tested on Office XP (and I make no claim that it will work in prior versions but it might/should)

Open the example workbook (Production records.xlsm from the above links) or your own data file.

Notice that there are 3 worksheets in the workbook:

+ Control:   The master sheet which allows selection of your filter or summation criteria and a button to execute a macro
+ Transfer: The transfer sheet, the entry or summation here will be transferred to word
+ Data:        The database

Setup a Control Sheet

The control sheet is a simple data validation or selection tool and a button which will run a macro.

It can be as simple or as complex as you need to make it.

Example

In the example above there is simply a Data Validation cell which is linked to a list of shipment numbers and a Button to run the reports VBA subroutine.

You can make yours as simple or as complex as you need to extract the data from your data source.

The Produce Word Report button is linked to the MergeMe VBA subroutine.

Setup a Transfer Sheet

The Transfer sheet requires 2 rows

Row 1: Has a list of field names, These will be used in Word later so use something meaningful.
Row 2: Has a list of the records which will be transferred to Word. The cells will contain sufficient formulas to extract the relevant records from the Data sheet using the Data validation on the Control Sheet.

You need to setup sufficient fields to ensure that all records required in Word are setup or retrieved.

The order of the fields isn’t important as the field names are used for the transfer not the order.

Also you don’t have to use all the fields in Word, but if the Field isn’t made here you can’t retrieve it later.

The format or layout doesn’t matter as this is controlled in Word.

Example

Notice on the Transfer sheet that the Top Row is a list of field names

The second row uses an Index(Match( )) combination to retrieve the relevant records from the Data sheet.

Save the Excel file.

In the sample file I have made a simple retrieval of a matching records and associated fields, but the Transfer sheet could have just as easily sumarised multiple rows of data from your data source.

Setup a Word template

Setup in word a file which will be used as a template for the import.

Leave gaps where your fields values will go.

Save the file

Example

Open the example file (Shipping Template.docx)

If this is the first time you have opened the example file it may prompt you

“Opening this file will run the following SQL File …”

This is ok so accept Yes

You can either accept that and then follow the links to connect the file to the Production records.xlsm file

It will then prompt you for the Data Table which in our case is Transfer$ ie: the Sheet Name with a $ sign at the end

If it didn’t prompt you above or you answered No to the “Opening this file will run the following SQL File …” prompt we will connect again later anyway.

Now setup the file in word with all the text graphics, lines colors etc required for your form/report.

Leave gaps for the fields which we will add next.

Adding fields

Use mail merge to open the data source (Production records.xlsm)

Goto Mailings, Select Recipients, Use Existing List…

Navigate to the Production Records.xlsm file after which it will prompt you for the table which in our case is Transfer$ ie: the Sheet Name with a $ sign at the end (as discussed above)

Move to the 4 missing Field Locations as per the following table and insert the Field Names using the

Mailings, Insert Merge Field tab

Insert Fields as per the following table and highlights above:

Location Field Name (from Production Records.xlsm)
Shipment No : Shipment_No
Material : Cargo
Tonnes : Tonnes

The other fields Destination, Form and Date have already been pre-entered and are shown in Blue

You can format the fields as required, select the entire field and change the font, colors etc to suit.

You can view the field values using the Preview Results Button, see below

Make any other changes to the file

Save the file as a Word File Shipping Template.docx (not as a Word Template *.dotx)

Close Word


Run the Report

In the Production records.xlsm file we will now link the macro to the button on the control sheet

We need to check 3 lines in the macro before we execute it.

Goto VBA using Alt F11

Select the Production Records.xlsm, Modules on the left and find the

Sub MergeMe() Subroutine on the right

Near the top of the subroutine are 2 lines which list both the file which Word will use as a template and what the new file will be saved as after merging.

‘ Setup filenames

Const WTempName = “Shipping Template.docx ‘This is the Word Templates name, Change as req’d

Const NewFileName = “New Certificate.docx‘This is the New Word Documents File Name, Change as req’d

Change these values as appropriate

The code will overwrite the existing output file if it exists so once executes save it to another name/location.

If you are using your own data file copy this subroutine to your own VBA Module and edit as above.

You can now go back to Excel (Alt F11) and execute the macro using the button on the control page.

You should now have a new file called New Certificate.docx in the same directory as the Sample files.

Future Extensions

The above macro which does this transfer is a simple and easily scalable to 50+ fields without any modification.

Future enhancements would be:

+ Sourcing the New Word File name from the Control sheet

+ Incremental numbering of the word document each time the transfer is done

+ Numbering of the word document based on a Field value each time the transfer is done

+ Export of Multiple records at one time

+ Conditional formatting in Word based on field values

+ Improved error checking

If you are interested I encourage you to modify and post these enhancements here for all to benefit.

Macro

You can copy the Macro into any Excel file and save it as an *.xlsm file and link it to a Button and be up and running in minutes

The macro has a very small number of changes that need making internally to work anywhere.

What have been your Excel to Word transfer experiences ?

What have been your Excel to Word transfer experiences, let us know in the comments below:

What do you think of this approach to data transfer ?

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

23 Responses to “Displaying Text Values in Pivot Tables without VBA”

  1. sam says:

    Its possible to display up to 4 text values.

    Have a look at the screen shot of an example that I had posted way back at the EHA and figure out how its done !

    http://tinypic.com/r/muzywk/6

  2. ruve1k says:

    With Excel 2010 you can use Conditional Formatting to apply custom number formats which can display text. (In older versions you can only modify text color and cell background color, but not number formats.) Using CF allows for an even larger number of different display values.

  3. soumya says:

    Hey,
    Thanks, this helps. But how do you do it for multiple values where there is a huge amount of non repeating  text? 

  4. [...] Pivot Tables take tables of data and allow the user to summarise and consolidate the data at the same time. This is a great and very fast method of analysis but is restricted to handling mathematical functions on the value field resulting in numerical summaries. – read more [...]

  5. […] Read more here: Displaying Text Values in Pivot Tables without VBA […]

  6. Jon Gali says:

    There is a very good way actually for handling text inside values area.
    First you create a special column on the very left side and call it ID, and put unique ID (numbers only), and then create a pivot table with:

    Row Labels and Column labels as you like, and in the Values labels use the unique ID number.

    Move the unique ID number (copy paste) somewhere to the right and use vlookup to load the data you need using the ID as reference.

    It is a bit longer way but for me it works perfectly to combine values as you like in any moment.

    hope helps.

    Regards,

    Jon

  7. Linda says:

    Thank you! I finally understand pivot tables thanks to your clear, concise explanations and examples.

  8. Danzi says:

    Good Day. This is exactly what i have been looking for. However when i try it on my pivot table or even when i try to recreate this exercise using the sample worksheet, i get this error:

    "Microsoft Excel cannot use the number format you typed. Try using one of the built-in number formats."

  9. Hiren says:

    pls. help in table there is name, pan. amount. i have to make pivot table for example
    NAME PAN AMOUNT
    MR.X AAAAC1254T 500.00
    MR.Y AAABR1258C
    MR.A CFVDE2458T
    MR.Z AAVCR12548C
    MR.X AAAAC1254T
    MR.Z AADCD245T

  10. Hiren says:

    pls. help in table there is name, pan. amount. i have to make pivot table for example
    NAME PAN AMOUNT
    MR.X AAAAC1254T 500.00
    MR.Y AAABR1258C 1000
    MR.A CFVDE2458T 2000
    MR.Z AAVCR12548C 5451
    MR.X AAAAC1254T 45564
    MR.Z AADCD245T 4500
    how to get pivot tabe so i get PAN no. against Name.

  11. Letitgo says:

    I found an easy way to get text values in pivot table.

    I create an other worksheet in wich each cell has a formula that copy the pivot table. The trick is that the formula does a lookup for the numbers in the pivot table.

    The formula looks like that:
    =IF(ISNUMBER(table!A1);VLOOKUP(table!A1;Code!$A$1:$B$65;2);IF(ISBLANK(table!A1);" ";table!A1))

    Code is a worksheet where there is a liste of text /numbers correspondance.

    As a bonus The new sheet is easier to format

    Additional trick:
    In my case, i encoded differents codeid with a power(2, codeId-1) so that summing then is equivalent to concatenate them.

    1-A
    2-B
    4-C
    8-D

    yields :

    5 - AC
    14 - BCD

  12. Tushar says:

    Hi
    I want to ask if pivot can display dates in pivot field. As in a column i have customers and in row different items i want to know there last purchase date. anyone help in this??

  13. Tushar says:

    Hello Guys, Need your help
    I am doing some analysis of the cycle time of the product i.e how much time a product takes from manufacturing to the central warehouse.
    I have batch numbers for the product and against them i have to pull out the diff. dates
    Like the base date is from where the manufacturing start. So i have the batch number,against it's manuf. date. Now i have to pull out the date when it was quality released.
    I have the quality released data but the data have duplicates, like i will have two dates or may be three for the same batch. So my main objective is to pull out the date which is latest among them.

    BATCH NO. DATE of Mfg. DATE of Quality release
    A1 12/4/2014 (HERE I HAVE TO PULL value)

    Next Sheet
    BATCH NO. DATE of Quality Release
    A1 14/5/2014
    a2 23/5/2016
    A1 12/5/2014
    A1 13/6/2014

    From this sheet i have to pull up the latest date format of date here is dd/mm/yyy

    TIA

  14. […] needed to present text instead of counts in a pivot table value column. Here is an excellent resource for Excel manipulation, in addition to an overview of pivot […]

  15. Kyrene says:

    This is great thank you.

  16. Rabiul says:

    Wow!!! Excellent!! It helped me a lot.

  17. I am developing training tracking sheet for 200 employees with training completed date. Each employee will be attending 25 courses. How to indicate actual dates in pivot table value field.

Leave a Reply