【问题标题】:How to check if clipboard is empty of text?如何检查剪贴板是否为空?
【发布时间】:2016-06-06 08:03:44
【问题描述】:

如果我尝试从空剪贴板粘贴,我会收到错误消息。我想在粘贴之前检查剪贴板是否没有文本,这样我就可以避免这种情况。如何实现?我知道这可以通过错误处理来完成,但我更喜欢避免错误的方法。

编辑 -- 每个请求,添加创建错误的代码和错误消息:

导致问题的代码:

Sub PasteFromEmptyClipBoard()

    Selection.Paste

End Sub

我收到的错误消息:

“运行时错误 '4605' 此方法或属性不可用,因为剪贴板为空或无效。”

【问题讨论】:

  • 如果您向我们展示您正在使用的导致问题的代码以及它生成的错误消息,将会有所帮助。
  • @CindyMeister:谢谢辛迪。我添加了您要求的信息,但请注意,我从一开始就回答了我自己的问题。这是我几年前遇到的一个问题,我的答案中的方法是我发现的最好的方法,并且不依赖于错误处理。对我来说效果很好。
  • 我错过了您回答自己的问题 - 很好的贡献 :-) 感谢您添加额外信息,我认为它增加了问题的价值(使其更清晰)。
  • @CindyMeister:我真的应该说工作对我来说非常好,因为我真的不再使用.Paste 方法了。我通常使用范围,然后将文本放置在类似myRangeVariable.Text = "some text" 的位置。我可能会被误导,但我认为这种方式更快。但我知道,当我需要粘贴时,很难尝试处理空剪贴板问题。而且我更喜欢不进行错误处理。
  • Assign Range.Text = Range.Text 确实更快,并且具有不干扰用户在剪贴板上放置的内容的优点。或者 Range.FormattedText = Range.FormattedText 当格式很重要时。当然,当涉及到外部应用程序(例如 Excel)时……

标签: vba ms-word clipboard


【解决方案1】:

非常重要:在实现此代码之前,您必须首先设置对“Microsoft Forms 2.0 对象库”的引用(如下面的截图所示)。当您滚动浏览参考库时,您可能会发现它不是一个选项。要让它显示出来,只需向项目中添加一个表单(您以后可以随时删除该表单)。

Sub CheckClipboard()

        Dim myDataObject As DataObject

        Set myDataObject = New DataObject


        myDataObject.GetFromClipboard


        If myDataObject.GetFormat(1) = True Then 

            '''There is text on clipboard, so it's safe to paste

        Else 
            '''there is no text on the clipboard, so you may get error.

        End If

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多