【问题标题】:Userform in Word to change variablesWord中的用户窗体更改变量
【发布时间】:2020-06-29 10:06:59
【问题描述】:

我正在尝试使用用户表单自动化 Word 文件。

我想在 Word 文件中添加一些变量,并在功能区中放置一个按钮,打开用户表单以输入这些值。

我遵循了一些我在网上找到的教程,当我在用户窗体上按 OK 时,我有以下代码:

Private Sub cmdOK_Click()

Set oVars = ActiveDocument.Variables
Hide

oVars(RfQ).Value = TextBox1.Value
oVars(SFDC).Value = TextBox2.Value
ActiveDocument.Fields.Update
Unload.Me

End Sub

我得到了错误

“编译错误,变量未定义”。

在我的文本中,我有以下内容:{DOCVARIABLE SFDC * MERGEFORMAT}

我的目标是用我在用户表单中输入的值填充变量。

除此之外,我希望每次从功能区打开用户表单时,我都会预先填写变量中的信息,并且我可以更改/更新它们。

【问题讨论】:

  • 你好@Davide,如果你能分享你所遵循的教程的网站网址会很棒。
  • 如果我按照链接中的上述示例,我现在得到“编译错误:参数不是可选的”

标签: vba ms-word userform docvariable


【解决方案1】:

第一次你必须添加变量,像这样:

oVars.Add "RfQ", TextBox1.Value

创建后,您可以像这样更改它:

oVars("RfQ") = TextBox1.Value

在 cmets 提问后更新
在您的示例中,您写了oVars(RfQ).Value。这意味着“使用存储在 vba 变量 RfQ 中的名称获取文档变量”。我猜这不是你想要的。
我的猜测是文档变量被命名为 RfQ 并且您想将其用作变量的硬编码名称。在这种情况下,为文档变量名称添加引号,如下所示:

oVars("RfQ").Value = TextBox1.Value

由于您没有引号,因此您引入了一个新的隐式 vba 变量,名称为 RfQ,没有值。这产生了您尝试读取具有空名称的文档变量的效果。如果您将Option Explicit 放在模块顶部,您将免受此类问题的影响。

【讨论】:

  • 谢谢。第一次和一次被创建是什么意思?我已经在word文件中有变量RfQ..似乎脚本无法从word文件中获取它们..
  • 如果你已经有了,那么跳过第一步。在您的问题中,您写了(RfQ),而我写了("RfQ")。如果你有一个名为 RfQ 的变量,它包含什么?
  • 我很新,我可能无法理解所有内容。我为此道歉。假设我第一次打开文件时,RfQ DocVariable 文本将是 RfQ,在第一次使用用户表单后,它可能是从用户表单输入的任何数字。之后,我希望当我按 OK 时,变量会在我的 word 文件中更新,如果我想更改它,我可以再次打开用户表单并进行更改。
  • 感谢您的解释。现在我还有一个问题。当我运行它时,它会打开用户表单,我可以输入值,然后当我单击确定时出现编译错误:参数不是可选的“
  • 突出显示哪一行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 2013-07-24
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多