需要 Microsoft Word 中 GetFromClipboard 的替代方案

问题描述 投票:0回答:1

我需要 Microsoft Word 365 (Windows 10) 中 GetFromClipboard 的替代方案

我的代码使用 GetFromClipboard 如下所示:


 Public var1
 Dim MyData As DataObject
 Set MyData = New DataObject
 Dim var1 As String 

 ‘ extra code that locates text and selects it’
 Selection.Copy
 MyData.GetFromClipboard
 var1 = MyData.GetText(1)

我能够读取 var1 并根据存储在那里的内容执行嵌套宏,我还可以粘贴内容或使用 TypeText 将内容插入到文档中。

这个方法行之有效了好几年。现在,我的一些客户端用户收到一致的错误消息:DataObject:GetFromClipboard OpenClipboard 失败。

一开始,它并没有停在这行代码的第一个实例上。它可能会读取代码出现的前 25 次,但会在第 26 次停止。有一段时间,用户可以重新启动宏,代码行将起作用,整个过程将运行。然后需要进行2-3次尝试。每次出现错误消息时,它都会停在 GetFromClipboard 行的不同实例上。现在宏拒绝传递第一个 GetFromClipboard 行,并且总是抛出相同的错误消息。

奇怪的是,公司中的一个系统可以运行这些宏并且不会给出错误。办公室里的每个人都必须坐在这一台计算机前来运行这些宏。它使用相同的Normal.dotm,具有相同的操作系统。

我已经进行了几天的在线研究,但找不到任何知道如何解决此问题的人。我尝试了几行类似的代码。例如,我已经知道 PutInClipboard 不起作用。

我真正需要的是一种替代方案,其关键特征是存储的变量必须在嵌套宏或调用宏中可用。只要该宏正在运行,我尝试过的大多数选项都会存储变量的内容。它不会在嵌套或调用的宏中记住它。

Corel WordPerfect(请不要窃笑)有一个 PersistAll!命令就成功了并且每次都有效。我发现一个帖子说使用静态(有一个清晰的例子),我尝试过,除非我编码错误,否则它不起作用。

我还没有找到任何人的代码可以让我复制文本、将文本存储在变量中,并在主宏调用的其他宏中访问该变量的内容。有人可以帮忙吗???

我需要一些可以在 Microsoft Word 中使用的东西,而不是 Excel。

路易·塔克

我尝试过 Static、PutInClipboard 以及其他几个在 Excel 中有效的选项,但在 Word 中无效。我已经为此花了好几天的时间,但我已经忘记了我尝试过的一切。

vba ms-word clipboard
1个回答
0
投票
  • 剪贴板不是一个可靠的解决方案。用户的操作或其他软件可能会破坏剪贴板中的内容。

  • 我建议将该值存储在 Windows 注册表中而不是剪贴板中。优点是重启后仍然可以访问。

Option Explicit

Sub WriteRegistry()
    Dim KeyName As String
    Dim StrValue As String
    Const APP_NAME = "MyApp" ' modify as needed
    Const SECTION = "Word"
    KeyName = "WordVar"
    StrValue = "**This is a test string.**"
    SaveSetting APP_NAME, SECTION, KeyName, StrValue
    MsgBox "Text successfully stored in the registry.", vbInformation
End Sub

Sub ReadRegistry()
    Dim KeyName As String
    Dim StrValue As String
    Const APP_NAME = "MyApp"
    Const SECTION = "Word"
    KeyName = "WordVar"
    StrValue = GetSetting(APP_NAME, SECTION, KeyName)
    MsgBox "Retrieved Text: " & StrValue, vbInformation
End Sub

Sub RemoveRegistry()
    Const APP_NAME = "MyApp"
    Const SECTION = "Word"
    DeleteSetting APP_NAME, SECTION
    MsgBox "Remove it from the registry.", vbInformation
End Sub

微软文档:

保存设置语句

获取设置功能

删除设置语句

© www.soinside.com 2019 - 2024. All rights reserved.