【问题标题】:Allowing user to select text in word vba macro允许用户在 word vba 宏中选择文本
【发布时间】:2009-04-02 14:31:01
【问题描述】:

在 VBA for Word 2007 中,我希望能够打开文档、突出显示文本部分并将这些部分替换为链接到文档变量的字段。该过程将是:

  1. 打开文档。
  2. 选择文本。
  3. 从列表中选择文档变量。
  4. 插入链接到所选文档变量的字段。
  5. 根据需要重复步骤 1-4。

没有办法事先知道要选择的文本是什么,或者哪个文档变量将链接到哪个字段,或者这些步骤要重复多少次。

只有微软才能让用户在运行时做出选择并将该选择传回子程序这一最根本、最简单的任务如此曲折和超现实。我花了 2 天时间试图弄清楚这一点。如果有人可以帮忙,我会以你的名字命名我的下一个孩子。

【问题讨论】:

  • 虽然我不知道如何解决您的问题,但我理解“曲折和超现实”。

标签: vba ms-word


【解决方案1】:

我认为“曲折和超现实”是一种误解。

创建一个带有下拉菜单(例如名为 "selVarName")的小表单,让您可以选择所有可用的文档变量名称。将表单链接到快速访问工具栏中的自定义按钮。

在此表单中单击“确定”后,请执行以下操作:

Private Sub btnOK_Click()
  Dim v As Word.Variable
  Dim n As String

  n = Me.selVarName.Value
  With Selection
    For Each v In .Document.Variables
      If v.Name = n Then v.Delete: Exit For
    Next v
    .Document.Variables.Add n, .Range.Text
  End With
End Sub

这已经花里胡哨了。例如,您可以进行其他检查,例如“未选择文本”。

【讨论】:

  • 我遇到的问题是选择对象。我能找到的所有内容似乎都需要已经选择文本或依赖于在宏中搜索文档。我需要程序通过突出显示文本来提示用户在运行时进行选择。我该怎么做?
  • 让用户选择一些文本然后单击按钮有什么问题?我想我仍然不明白您要做什么,但我有直觉认为您尝试这样做的方式可能是错误的。
  • 根据定义,选择对象是当前选择的对象!我同意@Tomalak,做出您的选择,在您的表单上选择您的选项,然后按 OK 处理您刚刚选择的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 2021-03-22
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
相关资源
最近更新 更多