首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记录Microsoft邮件合并模板?

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

Stack Overflow用户
提问于 2016-06-02 22:07:01
回答 1查看 655关注 0票数 0

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

一切正常工作,但我有一个紧凑的混乱大括号,格式化的单个字符和字段,只有很少的空格(因为这将改变我的输出)。我用CTRL-F9和Word插入字段,将它们视为自己的对象,而不是单独的字符。

复杂的原因在于有许多条件字段,其中一些字段是嵌套的,并且没有大多数代码用于查看嵌套结构(换行、缩进等)的典型提示。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-04 12:41:12

可以帮助处理字段代码文档的工作包括以下内容。但是有很多问题,这使答案复杂化了。我试过在下面报道他们。

  1. 使用字段代码大括号内的段落标记等格式化字符来改进布局。
  2. 使用带空结果的字段代码类型(如"SET“)插入文档
  3. 使用字段代码中的隐藏文本插入文档
  4. 移除并非绝对的引号(")字符 必要的

(1)的一个例子:

如果你有这样的东西:

代码语言:javascript
复制
{ IF { MERGEFIELD A } = { bookmarka } "{ MERGEFIELD B }" "{ IF { MERGEFIELD C } = { bookmarkb } "result2" "result3" }" }

然后,您可以这样放置它,而不改变IF字段的结果:

代码语言:javascript
复制
{ IF { MERGEFIELD A } = { bookmarka } 
  "{ MERGEFIELD B }" 
  "{ IF { MERGEFIELD C } = { bookmarkb } 
    "result2" 
    "result3" }" }

单击“{ bookmarka }后”并按Enter键输入一个普通单词段落标记,然后在引号字符之前插入一些空格。

不同的人可能会选择不同的缩进方式和方法来处理闭包"}“。在这方面没有任何标准或广泛使用的传统,比如C代码。

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

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

例如:

代码语言:javascript
复制
{ SET REMARK I wouldn't use "COMMENT" }

或放

代码语言:javascript
复制
{ SET REMARK "" } 

在代码的开头,然后使用

代码语言:javascript
复制
{ REMARK I wouldn't use "COMMENT" }

{ REMARK because it might be confused with the "COMMENTS" field } 

请记住,您不能绝对地将字段代码放在字段代码“块”中的任何地方,因为在某些地方,单词对字段编码的整数会发生变化。例如:

代码语言:javascript
复制
{ IF 1 = 0 { MERGEFIELD X } { MERGEFIELD Y } }

应该始终插入{ MERGEFIELD Y }的值

代码语言:javascript
复制
{ IF 1 = 1 { MERGEFIELD X }{ REMARK insert X } { MERGEFIELD Y } }

将插入{ REMARK insert X }的结果

你可以用

代码语言:javascript
复制
{ IF 1 = 1 "{ MERGEFIELD X }{ REMARK insert X }" { MERGEFIELD Y } }

或者在这种情况下,

代码语言:javascript
复制
{ IF 1 = 1 { MERGEFIELD X { REMARK insert X } } { MERGEFIELD Y } }

在第(3)点上,Word通常忽略字段代码中的隐藏文本,因此可以使用隐藏文本插入文档。但同样,你必须小心放置在哪里。例如,对于通常标记为隐藏的字段类型(如TC和XE ),这种方法是无用的。就我个人而言,我不认为插入文档然后隐藏它的想法是理想的--与其他任何东西相比,即使不知道它在那里,也很容易删除。但这是可以做到的。

至于第4点,Microsoft插入某些字段类型的方式,以及“字段代码语言”的文档(例如它是),意味着有一个用引号字符包围某些事物的传统。示例通常显示在IF字段中..。

代码语言:javascript
复制
{ IF comparand-1 operator comparand-2 "result if true" "result if false" }

在这种情况下,您将需要引号,但是如果“结果如果为真”或“结果如果为假”则为单个单词(就word而言)或单个字段代码的结果,则可以省略引号。

代码语言:javascript
复制
{ IF comparand-1 operator comparand-2 true false }

代码语言:javascript
复制
{ IF comparand-1 operator comparand-2 { REF bookmarka } { REF bookmarkb } }

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

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

例如,假设您有一个mergefield X,它可以包含任何文本字符串,并且希望将该字符串与"3“进行比较。如果您使用

代码语言:javascript
复制
{ IF { MERGEFIELD X } = 3 True False } 

如果X是"1+2","3","4-1“,你将得到一个真实的结果。在这种情况下,你需要

代码语言:javascript
复制
{ IF "{ MERGEFIELD X }" = 3 True False } 

如果将"3“替换为某种变量字段,您可能需要

代码语言:javascript
复制
{ IF "{ MERGEFIELD X }" = "{ theVariable }" 3 True False } 

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37602946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档