将变量存储在 MS Word 中并在超链接应用程序中使用它作为变量?

将变量存储在 MS Word 中并在超链接应用程序中使用它作为变量?

我有一个场景,我提供超过20 个超链接虚拟机的IP 已更改, 我需要手动更改整个文档中。有什么方法可以存储变量,例如

vm_ip = "ec2-13-211-bla-bla.amazonaws.com"

因此,不要提供超链接ec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller, 我能给{vm_ip}/swagger-ui.html/food-controller

类似这样。我正在研究宏,但它很混乱,不知道它是如何工作的。

答案1

  1. 这可能比看起来要复杂得多,这就是为什么这个答案相当长。有几个关键的事情需要理解,还有很多步骤。在我看来,这不是你可以依靠最终用户正确完成的事情,至少在没有一套非常好的说明的情况下不能。就我个人而言,我认为这是一项“编程”任务,而且由于这不是任何人都可能经常做的事情,我认为它仍然需要一套很好的说明。

  2. 如果您只想让这些超链接在 Word 中起作用,则主要有两种可能性,取决于您希望这些超链接仅为文本还是活动超链接。

    如果您想将它们插入到 Word 中,以便在将文档保存为 HTML 或 PDF 时它们能够正常工作,那么此答案并未涵盖这一点,您应该修改问题以包含该要求。此外,此处描述的字段编码只能在 Word 的桌面版本中使用(它也可能在 Web 或“设备”版本之一中使用,但上次我查看时,这些版本与字段代码配合得并不好。

  3. 因此,如果您希望这些链接是 Word 中不视为活动链接的文本(例如,它们可能在您的文档中,以便人们可以将链接文本复制到其他地方),那么您可以使用 SET 和书签字段来执行此操作。

    例如,如果您只有一个“基本”地址(如“ec2-13-211-bla-bla.amazonaws.com”),并且您在很多地方重复使用,或许还带有其他地址信息,那么您可以使用

    { 设置 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 中,

    a. 转到文件->信息

    b. 单击“属性”下拉菜单(位于右侧栏的顶部)

    c. 单击“高级属性”

    d. 点击自定义选项卡

    e. 在文本框中输入“base1”

    f. 在类型框中,确保选择了“文本”

    g. 在值框中,输入 ec2-13-211-bla-bla.amazonaws.com

    h. 确保未选中“链接到内容”框

    i. 单击“确定”

    然后链接所需的字段编码是

    { DOCPROPERTY base1 }/swagger-ui.html/food-controller

    要更新链接,您需要返回到“自定义属性”对话框,更改 demo1 属性的值,然后选择文档文本并更新文档中的所有字段(再次按 ctrl-A、F9)。

    如果您有多个不同的“基地址”,那么您要么需要多个 SET 字段,要么需要多个自定义文档属性,例如,称为 base1、base2、base3 或其他。

  4. 如果您想要一个可点击的超链接字段,那么它会变得稍微复杂一些,因为您必须将 REF 字段嵌套在 HYPERLINK 字段中,如下所示:

    { 超链接“{ base1 }/swagger-ui.html/food-controller” }

    再次,全部{ } 必须是那些特殊的 ctrl-F9 字段括号字符,而不是您可以在键盘上输入的字符

    但有两个问题:

    a. 当 Word 首次创建 HYPERLINK 字段(或首次更新该字段)时,显示文本是固定的。此外,它固定为您提供的初始“链接文本”相同。

    b. Word 倾向于在您保存、关闭并重新打开文档时解析 REF 字段(即用其结果替换该字段)。因此此时您无法修改基址和更新超链接。

    如果您尝试使用一个超链接字段,您可能不会注意到 (b),因为阻止 Word 解析 REF 字段的原因似乎是在 HYPERLINK 字段的某个位置有一个书签(您可以手动插入,或使用 SET 字段)。由于 Word 在插入点插入了一个名为 _GoBack 的隐藏书签,如果您在关闭文档之前做的最后一件事是编辑 HYPERLINK 字段,当您重新打开时,字段的嵌套字段可能会被保留。

    因此,防止 HYPERLINK 字段丢失嵌套编码的技巧是确保每个字段中都有一个书签。您可以通过在每个 HYPERLINK 中插入具有不同名称的 SET 字段来实现这一点,如下所示:

    { 超链接“{ base1 }/swagger-ui.html/food-controller” { 设置 save1“ ” } } { 超链接“{ base1 }/swagger-ui.html/something-else” { 设置 save2“ ” } }

    或者您可以尝试为每个超链接字段自动生成一个新的书签名称,使用如下代码:

    { 超链接“{ base1 }/swagger-ui.html/food-controller” { 设置“保存{ SEQ 保存 }” “ “ } } { 超链接“{ base1 }/swagger-ui.html/something-else” { 设置“保存{ SEQ 保存 }” “ “ } }

    (注:我相信这个想法起源于这里。事实上,它依赖于一种“技巧”,这意味着微软可以通过软件更改轻易地破坏它,但目前看来它还是有效的。)

    您应该能够对 { base1 } 部分使用 SET/REF 字段或自定义文档属性方法,如上所述。

    最后,问题(a),即链接的“显示文本”怎么办?

    这实际上有点难以解决。

    A. 假设您想要一个独立于“链接文本”的“显示文本” - 例如,如果您希望显示文本为

    我的显示文字

    然后首先,我将创建您最终要使用的超链接,例如

    { 超链接“{ base1 }/swagger-ui.html/food-controller” { 设置 save1“ ” } }

    然后,在您实际需要超链接的位置插入显示所需显示文本的超链接。一种方法是手动插入 HYPERLINK 字段,例如

    • 使用 ctrl-F9 插入一对字段代码括号 { }

    • 在里面输入 HYPERLINK“我的显示文本”

    • 选择字段并使用 F9 更新其结果。结果应显示您想要的文本

    • 选择并复制其他字段的全部文本 HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " }

    • 选择 HYPERLINK“我的显示文本”并粘贴其他代码来替换它

    • 更新字段值。

    有一个问题,如果你读完“B”,你可能会发现。我会在最后解释。

    B. 相反,如果您希望显示文本与链接文本相同,则必须依靠另一个技巧。

    假设你使用了这种编码

    { SET base1 "ec2-13-211-bla-bla.amazonaws.com" }
    
    { HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } }
    

    那么你要做的是删除“base1”书签,然后更新 HYPERLINK 字段。此时您应该看到 HYPERLINK 字段结果显示如下错误(在英语版本的 Word 中):

    Error! Hyperlink reference not valid.
    

    这似乎重置了显示文本。因此,现在,您可以用所需的地址重新创建 base1 书签,然后再次更新所有 HYPERLINK 字段。

    当您使用 SET 字段和 REF 字段时,您不必删除 SET 字段。您可以将 SET 更改为 SEQ:

    { SET base1 "ec2-13-211-bla-bla.amazonaws.com" }
    

    { SEQ base1 "ec2-13-211-bla-bla.amazonaws.com" }
    

    然后更新该字段,从而破坏书签。

    更新超链接后,将 SEQ 改回 SET 并修改地址,例如

    { SET base1 "ec2-13-211-new-bla-bla.amazonaws.com" }
    

    然后更新该字段,然后更新所有 HYPERLINK 字段。

    使用自定义文档属性执行相同的操作可能有点麻烦,因为您可以在一个步骤中重命名属性。您可能能做的最好的事情就是选择列表中的属性,更改名称,然后单击“添加”。这实际上会创建一个新属性。删除旧属性,更新 HYPERLINK 字段,然后返回并重新创建所需的属性名称和值。

    最后,如果你确实需要方法“A”,即显示文本不会改变,那么你应该不是执行任何删除“base1”书签值的操作。如果这样做,将重置显示文本,并且您可能必须重新插入 HYPERLINK 字段以重新创建所需的文本。不好。

答案2

如果只是想设置值,那么可以使用@yokki 所说的。

对于超链接,word 提供了“超链接库”。因此,如果您在超链接中提供“swagger-ui.html/food-controller”,它将采用 {$hyperlink_base}/swagger-ui.html/food-controller。如果您想使用其他网站的超链接而不想使用“超链接库”,请使用完整 URL。

如何设置“超链接基础”?

  1. 转到“文件”功能区
  2. 右侧顶部“属性”
  3. 单击它并选择“高级属性”。
  4. 仅在“摘要”选项卡上,最后一个字段包含“超链接基础”。

就我而言,我将其设置为“ec2-13-211-bla-bla.amazonaws.com”。

因此,我提供的所有链接都给出了相对路径,而不是完整的 URL,

它需要“ec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller”。

所以,如果我需要更改 IP,我只需更新“超链接库”。

相关内容