使用MS Word 2010我试图将INCLUDEPICTURE字段放入IF语句的块中。虽然IF语句和INCLUDEPICTURE正常分离,但它们不能组合使用。
IF声明:
{ IF { MERGEFIELD condition \* MERGEFORMAT } = "expression" "true" "false" \* MERGEFORMAT }
这是正常的。
INCLUDEPICTURE:
{ INCLUDEPICTURE "picture.png" }
这也正常。
两者结合:
{ IF { MERGEFIELD condition \* MERGEFORMAT } = "expression" "{ INCLUDEPICTURE "picture.png" }" "false" \* MERGEFORMAT }
这不起作用。如果IF表达式为true,则根本不显示任何内容。
如何组合IF语句和INCLUDEPICTURE命令?
答案 0 :(得分:4)
这是一个众所周知的问题(即你是对的,它不起作用)。
不幸的是,没有一个特别好的解决方案 - 最简单的方法是使用空白的1像素图像文件。
通常的出发点是反转嵌套,以便你有更像这样的东西......
{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" }" }" \d }
这总是试图插入图片,并在{MERGEFIELD condition}<>的情况下报告(并插入)错误。 “表达”。最简单的分辨率是可以包含一个空白的1像素图片,例如
{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }" \d }
有时更清楚的是删除测试和分配并单独执行,特别是如果有多个测试。在这种情况下,
{ SET picname "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }
或者如果您愿意,
{ IF "{ MERGEFIELD condition }" = "expression" "{ SET picname "picture.png" }" "{ SET picname "blank1.png" }" }
您仍然需要在INNCLUDEPICTURE中嵌套IF才能使其正常工作。您可以使用:
{ INCLUDEPICTURE "{ IF TRUE { picname } }" \d }
如果将这些嵌套字段合并到输出文档,则字段将保留在输出中。如果你想要解析字段(例如,因为你需要将输出发送给没有图像文件的人),那么你需要更像这样的东西:
{ IF { INCLUDEPICTURE "{ IF TRUE { picname } }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
我相信你可以减少这个
{ IF { INCLUDEPICTURE "{ picname }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
事实上,我相信您可以插入您知道存在的任何图形文件的完整路径+名称,而不是第一个{picname},例如。
{ IF { INCLUDEPICTURE "the full pathname of blank1.png" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
但是你应该检查那些是否适合你。
<强> 修改 强> FWIW,最近的一些测试表明,当图片出现取消链接时,保存/重新打开会显示重组的链接(在结尾附近有一个* MERGEFORMATINET),并且图片预计位于该位置在这些链接中指出。这是否是由于Word的变化我无法分辨。如果有任何更改,它似乎是尝试在Word在.docx中创建的关系记录中允许一些相对路径寻址。
一些观察......
到目前为止,这些字段构造都不会处理您可能存在或不存在的图片路径名的情况。如果这是您所需要的,请修改您的原始问题。
答案 1 :(得分:0)
循序渐进指南:
bibadia的答案是有效的,但是当你犯错误时,单词并没有告诉你,因此很难做到正确。所以我希望这一步一步的回答有所帮助。
第1步:添加图片
在Word 2013 docx中(不知道其他版本)添加
{ INCLUDEPICTURE "C:\\picture.png" }
注意:使用CTRL + F9添加{},不要输入它们,因为它们不起作用。 使用\\而不是\ 运行邮件合并,按Ctrl + A然后按F9显示图片。
第2步:自动显示
要更改邮件合并文档,请使用(CTRL + A Shift + F9)。将其更改为
{ SET picname "C:\\picture.png" }
{ INCLUDEPICTURE "{ IF TRUE { picname } }" \d }
运行邮件合并 - 图片应该显示,不需要Ctrl + A然后F9
第3步:取消关联
删除\ d
这将允许您通过电子邮件发送文档。由于\ d导致文档创建指向图像文件的链接,而不是包含它。
第4步:添加IF 使用bibadia的解决方案,即
{ SET picname "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }
答案 2 :(得分:0)
我测试的另一个选项是使用If语句来检查表达式(在我的示例中检查条目是否为空),如果没有则显示图像,如果不显示某些自定义文本(如果你不希望文本只有空引号,即“”):
{IF {MERGEFIELD my_photo_variable_name} <> "" {INCLUDEPICTURE "{IF TRUE {MERGEFIELD my_photo_variable_name}}" \d} "Text to display if no picture available"}
其翻译为:
如果图像my_photo_variable_name
没有值,请在邮件合并中包含图像。
如果没有值,即没有图像,则显示自定义文本Text to display if no picture available
。