Use mail merge to create custom letters, invoices, labels and more

Share

Facebook
Twitter
LinkedIn

The idea of mail merge is simple & powerful. Imagine you handle recruitment at a large company. You just hired 300 analysts for the big data division. The next job – generate employment offer letters for each of them. Of course, you don’t want to type these letters one at a time. You have the details of all the 300 offers (name, email, address, offer code, role, benefit package details and date of joining etc.) in a spreadsheet. You also have a template of the offer letter.

Enter mail merge. This powerful feature combines MS Word documents with (Excel) data to generate all the 300 letters in just few minutes.

introduction-to-mail-merge-excel-word

You can use mail merge in many similar situations – like generating invoices, address labels, certificates etc.

Read the below tutorial to learn how to set up mail merge in Word.

Tutorial – using mail merge to generate invoices

For this tutorial, let’s pick the example of generating invoices.

Step 1 – Create a workbook with your data

Let’s say your invoice has 11 fields, as shown below.

fields-for-mailmerge

Create a workbook with 11 columns and load data as shown below.

sample-data-invoice-generation-mail-merge

Step 2 – Create an invoice template in MS Word

Open a new document in MS Word and create a document structure that reflects your invoice. You may download the invoice template for inspiration.

At this stage, our invoice looks like this:

mail-merge-template-blank

Step 3 – Activate Mail Merge

mailings-ribbon-word

Go to Mailings ribbon in MS Word and click on “Start mail merge” button. Choose the document type that best describes what you are doing (for invoices, you can choose either letter or normal word document)

mail-merge-from-regular-word-document

This activates mail merge mode on your document.

Step 4 – Load data

get-data-from-external-source

Now, we need to load the field data. Click on “Select recipients” and choose “Use an existing list”. This opens File>Open dialog. Navigate to the folder where you saved Excel workbook with invoice data and select the file.

Step 5 – Insert fields at right places

Now that we have a list of fields, load them at necessary location in the invoice template using the “Insert Merge Field” button.

Pro tip: You can use Rules option to set up If then rules based on field values. (for example, if the payment reference # is empty, you can show different text)

At this stage, our invoice looks like this:

mail-merge-template

Step 6 – Preview & complete mail merge

previewing-mail-merge

Using the preview results area, check if everything is ok. Once you are ready, click on “Finish & Merge” to generate individual word documents or emails or prints of the invoices.

Pro tip: If you have a PDF printer, you can use that to generate PDFs for each invoice automatically.

Download Mail Merge tutorial files

There are 2 files in this tutorial – Excel workbook with invoice data & Word document with mail merge setup.

After downloading the files: 

  1. Place them in the same folder.
  2. Open the Word document.
  3. At this point, you should get an error. Click ok.
  4. This will open Data link properties dialog.
  5. Type the full path of the downloaded Excel workbook in the Data source field. Click ok (see image).
  6. This should establish the connection for you.

Do you mail merge?

Mail merge is a very powerful and time saving feature. I use it often when I need to generate a lot of documents in one go.

What about you? Do you use mail merge? Please share your experiences & tips in the comments section.

Other ways to generate documents in Excel

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.

6 Responses to “Make VBA String Comparisons Case In-sensitive [Quick Tip]”

  1. Rick Rothstein (MVP - Excel) says:

    Another way to test if Target.Value equal a string constant without regard to letter casing is to use the StrCmp function...

    If StrComp("yes", Target.Value, vbTextCompare) = 0 Then
    ' Do something
    End If

    • Fares Al-Dhabbi says:

      That's a cool way to compare. i just converted my values to strings and used the above code to compare. worked nicely

      Thanks!

  2. Tim says:

    In case that option just needs to be used for a single comparison, you could use

    If InStr(1, "yes", Target.Value, vbTextCompare) Then
    'do something
    End If

    as well.

  3. Luke M says:

    Nice tip, thanks! I never even thought to think there might be an easier way.

  4. Cyril Z. says:

    Regarding Chronology of VB in general, the Option Compare pragma appears at the very beginning of VB, way before classes and objects arrive (with VB6 - around 2000).

    Today StrComp() and InStr() function offers a more local way to compare, fully object, thus more consistent with object programming (even if VB is still interpreted).

    My only question here is : "what if you want to binary compare locally with re-entering functions or concurrency (with events) ?". This will lead to a real nightmare and probably a big nasty mess to debug.

    By the way, congrats for you Millions/month visits 🙂

  5. Bhavik says:

    This is nice article.
    I used these examples to help my understanding. Even Instr is similar to Find but it can be case sensitive and also case insensitive.
    Hope the examples below help.

    Public Sub CaseSensitive2()

    If InStr(1, "Look in this string", "look", vbBinaryCompare) = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub

    Public Sub CaseSensitive()

    If InStr("Look in this string", "look") = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub
    Public Sub NotCaseSensitive()
    'doing alot of case insensitive searching and whatnot, you can put Option Compare Text
    If InStr(1, "Look in this string", "look", vbTextCompare) = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub

Leave a Reply