我有一个场景,我提供了20多个VM 的超链接。因此,如果 VM 的IP 发生更改,我需要在整个文档中手动更改。有什么方法可以存储变量,例如
vm_ip = "ec2-13-211-bla-bla.amazonaws.com"
所以,我可以给{vm_ip}/swagger-ui.html/food-controller,而不是给超链接ec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller
像这样的东西。我正在研究宏,但它令人困惑,不知道它是如何工作的。
这可能比看起来要复杂得多,这就是为什么这个答案相当长的原因。有一些关键的事情要理解,还有很多步骤。IMO 这不是您可以依靠最终用户正确完成的事情,至少在没有一套非常好的说明的情况下是这样。就个人而言,我认为这是一项“编程”任务,而且由于它不是任何人都可能经常做的事情,我会说它仍然需要一套好的指令。
如果您只希望这些超链接在 Word 中工作,则主要有两种可能性,具体取决于您希望这些超链接只是文本还是活动超链接。
如果您想将它们插入 Word,以便在将文档另存为 HTML 或 PDF 时它们可以工作,则此答案不涵盖该内容,您应该修改您的问题以包含该要求。此外,此处描述的字段编码只能在 Word 的桌面版本中使用(它也可以在 Web 或“设备”版本之一中使用,但我上次查看时,这些版本并不能很好地与字段代码一起使用。
因此,如果您希望这些链接是 Word 中的文本,Word 不会将其视为活动链接(例如,它们可能在您的文档中,以便人们可以将链接文本复制到其他地方),那么您可以使用 SET 和书签来执行此操作字段。
例如,如果您只有一个“基本”地址,例如“ec2-13-211-bla-bla.amazonaws.com”,您可以在许多地方重复使用,也许还有其他地址信息,您可以使用
{ SET base1 "ec2-13-211-bla-bla.amazonaws.com" }
在文档的开头(实际上,在第一页页眉中可以更安全地放置它以避免意外删除)。然后按照您给出的示例,您需要一个 REF 字段:
{ REF base1 }/swagger-ui.html/food-controller
(实际上省略 REF 有一个优势):
{ base1 }/swagger-ui.html/food-controller
所有 { } 都需要是特殊的域代码大括号对,您可以在 Windows 桌面版 Word 上使用 ctrl-F9 插入它们。
据我所知,将完整 URL 分隔为 REF 字段和一些纯文本会阻止 Word 尝试将生成的链接文本转换为可点击的 HYPERLINK 字段。
当您需要将“ec2-13-211-bla-bla.amazonaws.com”更改为其他内容时,例如可能只是“ec2-13-211-new-bla-bla.amazonaws.com”,您可以修改它SET 字段中的文本,更新 SET 字段(选择并按 F9)然后更新所有其他字段(例如 ctrl-A、F9)。
如果您想要比 SET 字段更难意外删除的内容,您可以创建和使用自定义文档属性。例如,在 Word 2016/2019/365 中,
一个。转到文件->信息
湾。单击“属性”下拉列表(在右侧列的顶部)
C。单击高级属性
d。单击自定义选项卡
e. 在文本框中,键入“base1”
F。在类型框中,确保选择“文本”
G。在值框中,键入 ec2-13-211-bla-bla.amazonaws.com
H。确保未选中“链接到内容”框
一世。点击确定
然后链接所需的字段编码是
{ DOCPROPERTY base1 }/swagger-ui.html/food-controller
要更新链接,您将返回自定义属性对话框,更改 demo1 属性的值,然后选择文档文本并更新文档中的所有字段(再次按 ctrl-A,F9)。
如果您有几个不同的“基本地址”,那么您需要几个 SET 字段或几个自定义文档属性,例如称为 base1、base2、base3 或其他。
如果您想要一个可点击的超链接字段,那么它会变得有点复杂,因为您必须将 REF 字段嵌套在 HYPERLINK 字段中,如下所示:
{ HYPERLINK "{ base1 }/swagger-ui.html/food-controller" }
同样,所有{ } 都必须是那些特殊的 ctrl-F9 字段大括号字符,而不是您可以在键盘上键入的字符
但是有两个问题:
一个。Word 首次创建 HYPERLINK 字段(或首次更新它)时,显示文本是固定的。此外,它被固定为与您提供的初始“链接文本”相同。
湾。当您保存、关闭和重新打开文档时,Word 倾向于解析 REF 字段(即用其结果替换字段)。因此,此时您将失去修改基址和更新超链接的能力。
如果您尝试使用一个超链接字段,您可能不会注意到 (b),因为似乎阻止 Word 解析 REF 字段的是在 HYPERLINK 字段的某处有一个书签(您可以手动插入,或使用 SET 字段) . 因为 Word 在插入点插入了一个名为 _GoBack 的隐藏书签,如果您在关闭文档之前所做的最后一件事是编辑 HYPERLINK 字段,那么当您重新打开时,该字段的嵌套字段可能会被保留。
因此,防止 HYPERLINK 字段丢失其嵌套编码的技巧是确保每个字段中都有一个书签。您可以通过在每个 HYPERLINK 中插入具有不同名称的 SET 字段来做到这一点,如下所示:
{ HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } } { HYPERLINK "{ base1 }/swagger-ui.html/something-else" { SET save2 " " } }
或者您可以尝试为每个超链接字段自动生成一个新的书签名称,使用如下编码:
{ HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET "save{ SEQ save }" " " } } { HYPERLINK "{ base1 }/swagger-ui.html/something-else" { SET "保存{ 序列保存}" " " } }
(注意,我相信这个想法起源于这里。它依赖于“技巧”这一事实意味着微软可以很容易地通过改变软件来破坏它,但它目前似乎有效。)
如上所述,您应该能够对 { base1 } 部分使用 SET/REF 字段或自定义文档属性方法。
最后,问题(a),即链接的“显示文本”呢?
这实际上有点难以解决。
A.假设你想要一个独立于“链接文本”的“显示文本”——例如,如果你想要显示文本是
我的显示文本
然后首先,我将创建您最终将使用的字段的超链接,例如
{ HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } }
然后,在您实际需要超链接的位置,插入显示所需显示文本的超链接。一种方法是手动插入 HYPERLINK 字段,例如
使用 ctrl-F9 插入一对域代码大括号 { }
在里面,输入 HYPERLINK “我的显示文本”
选择字段并使用 F9 更新其结果。结果应该显示你想要的文本
选择并复制该其他字段的整个文本 HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " }
选择 HYPERLINK“我的显示文本”并粘贴其他代码以替换它
更新字段值。
如果您通读“B”,则可能会出现一个问题。我会在最后解释。
B. 如果相反,您希望显示文本与链接文本相同,则必须依靠另一个技巧。
假设您使用了这种编码
然后你要做的是删除“base1”书签,然后更新 HYPERLINK 字段。此时您应该看到 HYPERLINK 字段结果显示如下错误(在 Word 的英文版中):
这似乎重置了显示文本。所以现在,您可以使用所需地址重新创建 base1 书签,并再次更新所有 HYPERLINK 字段。
当您使用 SET 字段和 REF 字段时,您不必删除 SET 字段。您将 SET 更改为 SEQ:
至
然后更新该字段,这会破坏书签。
更新超链接后,将 SEQ 改回 SET 并修改地址,例如,您有
然后更新该字段,然后更新所有 HYPERLINK 字段。
用自定义文档属性做同样的事情可能有点尴尬,因为您可以在一个步骤中重命名属性。您可能做的最好的事情是在列表中选择属性,更改名称,然后单击添加。这实际上创建了一个新属性。删除旧的,更新 HYPERLINK 字段,然后返回并重新创建您需要的属性名称和值。
作为最后的观察,如果你真的需要方法“A”,显示文本不会改变,你不应该做任何删除“base1”书签的值的事情。如果这样做,那将重置显示文本,并且您可能必须重新插入将重新创建所需文本的 HYPERLINK 字段。不好。
如果只是想设置值,那么可以使用@yokki 所说的。
对于超链接,word 提供“超链接库”。所以,如果你在超链接中给出“swagger-ui.html/food-controller”,它将需要 {$hyperlink_base}/swagger-ui.html/food-controller。如果你想使用一些其他网站的超链接并且不想使用“超链接库”,请使用完整的 URL。
如何设置“超链接库”?
就我而言,我将其设置为“ec2-13-211-bla-bla.amazonaws.com”。
所以,我给出的所有链接都是相对路径,而不是整个 URL,
它需要“ec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller”。
所以,如果我需要更改 IP,我只会更新“超链接库”。