Word 2010 combining INCLUDEPICTURE and IF

user3065343 picture user3065343 · Dec 4, 2013 · Viewed 11.4k times · Source

Using MS Word 2010 I am trying to place an INCLUDEPICTURE field into a block of an IF statement. While both the IF statement and the INCLUDEPICTURE work correctly separate, they do not work in combination.

IF Statement:

{ IF { MERGEFIELD condition \* MERGEFORMAT } = "expression" "true" "false" \* MERGEFORMAT }

This works correctly.

INCLUDEPICTURE:

{ INCLUDEPICTURE "picture.png" }

This works correctly, too.

Combination of the two:

{ IF { MERGEFIELD condition \* MERGEFORMAT } = "expression" "{ INCLUDEPICTURE "picture.png" }" "false" \* MERGEFORMAT }

This does not work. If the IF expression is true, nothing is displayed at all.

How can I combine both the IF statement and the INCLUDEPICTURE command?

Answer

user1379931 picture user1379931 · Dec 4, 2013

This is a well known-problem (i.e. you are right, it doesn't work).

Unfortunately, there isn't a particularly good solution - the simplest involves using a blank 1-pixel image file.

The usual starting point is to invert the nesting so that you have something more like this...

{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" }" }" \d }

This always tries to insert a picture, and will report (and insert) an error in the case where { MERGEFIELD condition } <> "expression". The simplest resolution is to have a blank 1-pixel picture that you can include instead, e.g.

{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }" \d }

It is sometimes clearer to remove the test and assignment and do it separately, particularly if there are multiple tests. In this case,

{ SET picname "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }

or if you prefer,

{ IF "{ MERGEFIELD condition }" = "expression" "{ SET picname "picture.png" }" "{ SET picname "blank1.png" }" }

You still need an IF nested inside the INNCLUDEPICTURE to make it work. You can use:

{ INCLUDEPICTURE "{ IF TRUE { picname } }" \d }

If you merge those nested fields to an output document, the fields will remain in the output. If you want the fields to be resolved (e.g. because you need to send the output to someone who does not have the image files) then you need something more like this:

{ IF { INCLUDEPICTURE "{ IF TRUE { picname } }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }

I believe you can reduce this to

{ IF { INCLUDEPICTURE "{ picname }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }

In fact, I believe you can insert the full path+name of any graphic file that you know exists instead of the first { picname }, e.g.

{ IF { INCLUDEPICTURE "the full pathname of blank1.png" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }

But you should check that those work for you.

EDIT FWIW, some recent tests suggest that whereas the pictures appear unlinked, a save/re-open displays a reconstituted link (with a *MERGEFORMATINET near the end), and the pictures are expected to be at the locaitons indicated in those links. Whether this is due to a change in Word I cannot tell. If anything has changed, it looks to be an attempt to allow some relative path addressing in the Relationship records that Word creates inside the .docx.

Some observations...

  • Make sure paths have doubled-up backslashes, e.g. c:\\mypath\\blank1.png . This is usually necessary for any paths hard-coded into fields. For paths that come in via nested field codes, please check.
  • As a general point, it is easier to work with INCLUDEPICTURE fields when the document is a .doc, not .docx, and to ensure that File->Options->Advanced->General->Web options->Files->"Update links on save" is checked. Otherwise, Word is more likely to replace INCLUDEPICTURE fields with a result that cannot be redisplayed as a field using Alt-F9
  • When you want to treat the comparands in an IF field as strings, it is advisable to surround them with double-quotes, as I have done. Otherwise, a { MERGEFIELD } field that resolves to the name of a bookmark may not behave as you would hope. Otherwise, spacing and quoting is largely a matter of personal choice.

So far, none of these field constructions will deal with the situation where you have path names for pictures that may or may not exist. If that is what you need, please modify your original question.