Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Documentation 如何记录Microsoft Word邮件合并模板?_Documentation_Mailmerge_Word 2010 - Fatal编程技术网

Documentation 如何记录Microsoft Word邮件合并模板?

Documentation 如何记录Microsoft Word邮件合并模板?,documentation,mailmerge,word-2010,Documentation,Mailmerge,Word 2010,我正在使用Word 2010中的目录邮件合并功能,使用Excel 2010电子表格作为数据源来创建格式化文档(需求) 一切正常,但我有一大堆大括号、格式化的单个字符和字段,几乎没有空格(因为这会改变我的输出)。我插入了带有CTRL-F9的字段,Word将它们视为自己的对象,而不是单个字符 复杂之处在于有很多条件字段,其中一些字段是嵌套的,没有大多数代码看到嵌套结构的典型线索(换行、缩进等) 是否有一种直接的方法从文档中记录邮件合并模板代码?或者,如果我想利用空白和其他可读性提示,我是否需要维护一

我正在使用Word 2010中的目录邮件合并功能,使用Excel 2010电子表格作为数据源来创建格式化文档(需求)

一切正常,但我有一大堆大括号、格式化的单个字符和字段,几乎没有空格(因为这会改变我的输出)。我插入了带有
CTRL-F9
的字段,Word将它们视为自己的对象,而不是单个字符

复杂之处在于有很多条件字段,其中一些字段是嵌套的,没有大多数代码看到嵌套结构的典型线索(换行、缩进等)


是否有一种直接的方法从文档中记录邮件合并模板代码?或者,如果我想利用空白和其他可读性提示,我是否需要维护一个单独的文本文件?

您可以通过以下方法帮助编写字段代码文档。但有相当多的陷阱,这使答案复杂化。我试着在下面介绍它们

  • 在字段代码中使用格式字符,如段落标记 使用大括号来改进布局
  • 使用结果为空的字段代码类型,例如“SET”以插入 文件
  • 使用字段代码内的隐藏文本插入文档
  • 删除不是绝对的引号(
    )字符
    必要的
  • (1)的一个例子:

    如果您有以下情况:

    { IF { MERGEFIELD A } = { bookmarka } "{ MERGEFIELD B }" "{ IF { MERGEFIELD C } = { bookmarkb } "result2" "result3" }" }
    
    然后,您可以这样布局,而不改变IF字段的结果:

    { IF { MERGEFIELD A } = { bookmarka } 
      "{ MERGEFIELD B }" 
      "{ IF { MERGEFIELD C } = { bookmarkb } 
        "result2" 
        "result3" }" }
    
    通过在
    {bookmarka}
    之后单击并按Enter键输入普通单词段落标记,然后在引号字符之前插入一些空格

    不同的人可能会选择不同的缩进模式和处理结尾“}”的方式。在这个领域没有标准或广泛使用的传统,比如说C代码

    这有一个缺点。每次在字段代码和字段结果视图之间切换时,Word可能会在一个长文档中重新编制页码,很可能会“失去您在代码中的位置”

    (2)的一个例子是,您可以在代码中的许多地方(但不是全部)插入{SET}字段,并在“SET variablename”部分后添加几乎所有的文本。或者您可以定义一个名为“REMARK”的书签(“COMMENT”似乎很容易与内置字段代码注释混淆)

    e、 g

    或者说

    { SET REMARK "" } 
    
    在代码的开头,使用

    { REMARK I wouldn't use "COMMENT" }
    
    { REMARK because it might be confused with the "COMMENTS" field } 
    
    请记住,您不能将字段代码绝对地放在字段代码“块”中的任何位置,因为在某些地方,Word对字段代码的解释会发生变化

    { IF 1 = 0 { MERGEFIELD X } { MERGEFIELD Y } }
    
    应始终插入
    {MERGEFIELD Y}

    但是

    将插入
    {REMARK insert X}

    你可以用

    { IF 1 = 1 "{ MERGEFIELD X }{ REMARK insert X }" { MERGEFIELD Y } }
    
    或者在这种情况下

    { IF 1 = 1 { MERGEFIELD X { REMARK insert X } } { MERGEFIELD Y } }
    
    关于第(3)点Word通常会忽略字段代码中的隐藏文本,因此您可以使用隐藏文本插入文档。但同样,您必须小心放置位置。例如,这种方法对于通常标记为隐藏的字段类型(如TC和XE)无效。就我个人而言,我不认为插入文档然后隐藏文档的想法是ideal-除了其他任何东西之外,它很容易被删除,甚至不知道它在那里。但它是可以做到的

    至于第4点,Microsoft Word为“字段代码语言”插入某些字段类型和文档(例如)的方式意味着有一种传统,即使用引号字符围绕某些内容。示例通常在IF字段中显示这一点

    { IF comparand-1 operator comparand-2 "result if true" "result if false" }
    
    在这种情况下,您需要引号,但如果“如果结果为真”或“如果结果为假”是单个单词(就单词而言)或单个字段代码的结果,则可以省略引号,例如

    { IF comparand-1 operator comparand-2 true false }
    

    就我个人而言,我更喜欢使用引号,因为这是许多用户熟悉的模式,如果您以某种方式修改字段代码,则不必确定是否需要重新插入引号,等等。但这只是我的偏好。在嵌套if字段的情况下,您通常将单个字段代码保存为结果,引号可能不会真正提高清晰度

    您还必须记住,在某些情况下,您必须用引号将字段括起来。例如,如果您希望确保将两个值作为字符串进行比较,至少您应该引用它们

    例如,假设您有一个可以包含任何文本字符串的合并字段X,并且希望将该字符串与“3”进行比较

    { IF { MERGEFIELD X } = 3 True False } 
    
    如果X是“1+2”,“3”,“4-1”,你会得到一个真实的结果

    { IF "{ MERGEFIELD X }" = 3 True False } 
    
    如果将“3”替换为某种变量字段,您可能需要

    { IF "{ MERGEFIELD X }" = "{ theVariable }" 3 True False } 
    

    Word在这种情况下对简单算术表达式求值的倾向并不是唯一可能出错的事情计算为您在文档中定义的书签的名称,Word倾向于取消引用该书签,并使用该书签的值而不是MERGEFIELD字段的值,除非您将
    {MERGEFIELD X}包围起来
    用引号括起来。

    您可以做的帮助字段代码文档的事情包括以下几点。但是有很多问题,这使答案变得复杂。我已经尝试在下面介绍它们

  • 在字段代码中使用格式字符,如段落标记 使用大括号来改进布局
  • 使用结果为空的字段代码类型,例如“SET”以插入 文件
  • 使用字段代码内的隐藏文本插入文档
  • 删除不是绝对的引号(
    )字符
    必要的
  • (1)的一个例子:

    如果您有以下情况:

    { IF { MERGEFIELD A } = { bookmarka } "{ MERGEFIELD B }" "{ IF { MERGEFIELD C } = { bookmarkb } "result2" "result3" }" }
    
    那你呢
    { IF "{ MERGEFIELD X }" = 3 True False } 
    
    { IF "{ MERGEFIELD X }" = "{ theVariable }" 3 True False }