Vba 如何从Word 2010 ActiveX标签中选择(或复制)文本?

Vba 如何从Word 2010 ActiveX标签中选择(或复制)文本?,vba,activex,ms-word,word-2010,Vba,Activex,Ms Word,Word 2010,Word 2010文档具有显示某些文本的ActiveX标签。从用户的角度看,有没有办法使文本可选择或可复制,以便用户可以将其粘贴到其他地方 用例:我把表格交给某人,他们填好后还给我。所讨论的元素是一个标签,当双击该标签时,会生成UserForm1,该标签上有一个列表框。一旦做出一个或多个选择并且用户在UserForm1上按OK,Word文档中的标签就会更新。然后我收到了表单,并希望右键单击标签,复制文本,然后将其粘贴到电子邮件中。至少从最终用户的角度来看,您不能这样做。让我解释一下 我开始想用标

Word 2010文档具有显示某些文本的ActiveX标签。从用户的角度看,有没有办法使文本可选择或可复制,以便用户可以将其粘贴到其他地方


用例:我把表格交给某人,他们填好后还给我。所讨论的元素是一个标签,当双击该标签时,会生成UserForm1,该标签上有一个列表框。一旦做出一个或多个选择并且用户在UserForm1上按OK,Word文档中的标签就会更新。然后我收到了表单,并希望右键单击标签,复制文本,然后将其粘贴到电子邮件中。

至少从最终用户的角度来看,您不能这样做。让我解释一下

我开始想用标签来实现这一点,但很快发现我无法使用传统的ctrl-c或右键单击>复制来复制显示在那里的文本

所以,我把它换成了一个文本框。这在一定程度上起到了作用,并且显示了数据,但有一个缺陷:Word 2010似乎在文本框的最后一行和文本框的底部之间放置了一堆不可选择的空格,使大部分内容隐藏起来,直到您将其卷回顶部

下面是它的样子:

注意到列表中最后一项下面的所有空的、不可选择的空间了吗

我的问题是100%的文本没有显示在文本框中,解决方法是使用这行代码,在将值放入文本框后,将光标放在文本顶部:

ThisDocument.functionalComponentsTextBox.SelStart = 0
这基本上模拟了用户手动点击文本框并按下向上键直到到达文本框顶部。这样,列表框中的选择现在存储在文本框中,文本框的内容可以作为我们业务流程的一部分复制和粘贴到任何地方

下面是它之后的样子:与正确显示的标签方法相比,这是一个完美的匹配!额外的好处:文本是可选择的,文本框是可自定义的,所以我删除了它的边框。。。看不出有什么区别


从用户的角度来看?为什么不依赖文本框呢?您可以更改其格式,使其看起来像一个标签。如果您想使用vba执行此操作(获取标签文本),则可以从用户的角度…@varocabas。我尝试了一个文本框,但我发现的问题是,一旦用户在列表框中选择了一些项目并按下OK,所选项目确实被转移到文本框中,但并非所有项目都在视图中;我必须在文本框中向上滚动才能到达顶部。这个屏幕截图显示了文本框和正在使用的标签之间的区别:@KazJaw是的,我知道如何检索和存储标签的文本。。。问题在于,这种“可选择文本/复制功能”必须由用户完成,尽管。。。因此,选择文本+复制,或右键单击+复制。您可以完全控制文本框,您可以更改其大小,重新定位文本,添加滚动条等。所有这些都是在运行时根据用户输入的文本进行的。您可以在任何前端模拟标签属性,并超越其功能(到目前为止)。关于KazJaw所说的可以复制标签中的文本,他的意思是在运行时检索内容(这很容易),但允许用户复制/粘贴其文本是不可能的;标签仅用于显示。如果您希望允许用户与文本交互,VBA希望您依赖类似文本框的控件。