error-handling - 使用GetText从剪贴板获取文本-仅在剪贴板上显示图形时避免错误

标签 error-handling excel clipboard excel-2003 vba

这是我在这里提出的问题的扩展:

Get text from clipboard using GetText - avoid error on empty clipboard

这个问题的答案可以很好地避免剪贴板为空的错误,但是现在我发现我还必须处理一个仅包含图形而不包含文本的剪贴板,并且这种情况会超出剪贴板的空过滤条件。

因此,如果剪贴板上只有图形而没有文本,我该如何终止该过程?

最佳答案

您可以使用此代码测试剪贴板中数据的格式是否为图像。

Option Explicit

Private Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long

Private Declare Function GetClipboardData Lib "user32" _
(ByVal wFormat As Integer) As Long

Private Declare Function CloseClipboard Lib "user32" () As Long

Const CF_BITMAP = 2

Sub Sample()
    Dim RetClpB As Long
    Dim RetBmp As Long

    '~~> Open Clipboard
    RetClpB = OpenClipboard(0&)

    '~~> Check if we were successful
    If RetClpB <> 0 Then
        '~~> Test if the data in Clipboard is an image by
        '~~> trying to get a handle to the Bitmap
        RetBmp = GetClipboardData(CF_BITMAP)

        '~~> If found
        If RetBmp <> 0 Then
            MsgBox "data in clipboad is an image"
        Else
            MsgBox "data in clipboad is not an image"
        End If
    End If

    '~~> Close Clipboard
    RetClpB = CloseClipboard
End Sub

关于error-handling - 使用GetText从剪贴板获取文本-仅在剪贴板上显示图形时避免错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090269/

相关文章:

C - 字符串到 uint64_t 的转换,并进行错误处理

c# - 发送HTTP header 后,服务器无法设置状态-ELMAH

excel - 对 Excel 文件运行批处理并编辑 VBA 代码

c# - 在 C# 中将文件复制到剪贴板

vbscript - 如果 VBScript 中出现错误,如何关闭 Word(或其他应用程序)?

java - 如何查看 java REST 服务中未处理异常的原因?

excel - 在另一个 UDF 中调用 UDF

具有多个 IF 条件的 Excel TEXTJOIN

scala - JavaFX/ScalaFX 和剪贴板 : Cannot copy files?

c# - 使用 Clipboard.SetData() 放入剪贴板的内容的第一个字节和最后一个字节是什么意思?