Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba:仅从剪贴板粘贴图像+;允许以后重复使用_Excel_Vba - Fatal编程技术网

Excel vba:仅从剪贴板粘贴图像+;允许以后重复使用

Excel vba:仅从剪贴板粘贴图像+;允许以后重复使用,excel,vba,Excel,Vba,我想允许用户在excel中执行以下操作。这可能是使用宏实现的 用户使用截图工具拍摄屏幕截图 代码检查剪贴板是否包含图像(仅当剪贴板包含图像时才运行的代码) 然后,代码会将剪贴板中的图像粘贴到指定区域(例如单元格J55) 同时,我想给这个粘贴的图像一个ID(比如,imgSource1),这样用户以后可以在另一张纸上重复使用这个图像(比如,在第2张纸上,调用imgSource1并粘贴到那里) 到目前为止,我已经学会了如何在上述位置将某些内容粘贴到excel中。我还没有找到一个工作代码来检查剪贴板上是

我想允许用户在excel中执行以下操作。这可能是使用宏实现的

  • 用户使用截图工具拍摄屏幕截图
  • 代码检查剪贴板是否包含图像(仅当剪贴板包含图像时才运行的代码)
  • 然后,代码会将剪贴板中的图像粘贴到指定区域(例如单元格J55)
  • 同时,我想给这个粘贴的图像一个ID(比如,imgSource1),这样用户以后可以在另一张纸上重复使用这个图像(比如,在第2张纸上,调用imgSource1并粘贴到那里)
  • 到目前为止,我已经学会了如何在上述位置将某些内容粘贴到excel中。我还没有找到一个工作代码来检查剪贴板上是否有图像。现在我需要弄清楚如何只粘贴图像(如何检查剪贴板是否在粘贴前只保存图像)。下面的代码似乎不适合我

    Sub btn_addImg1()
    If (Clipboard.GetImage() != null)
        Sheet1.Paste Destination:=Range("J55"), Link:=False
    Else
        'do nothing
    End If
    
    If(Clipboard.GetImage()”
    行是红色的,它告诉我它需要一个“)”位于“
    !=

    请注意,对于我的情况,在本地驱动器上保存映像不是一个可行的解决方案。它必须从剪贴板粘贴


    谢谢大家!

    我找到了一些解决办法,但需要测试

    顺便说一句,您需要转到工具->参考->Microsoft Forms 2.0项目库才能使
    MSForms
    正常工作

        Sub btn_addImg1()
        Dim DataObj As New MSForms.DataObject
        DataObj.GetFromClipboard
        On Error GoTo Img
            GetClipboardText = DataObj.GetText
        On Error GoTo 0
    Img:
        If Err = -2147221404 Then
            Err = 0
            Sheet1.Paste Destination:=Sheet1.Range("J55"), Link:=False
        Else
            'do nothing
        End If
        End Sub
    

    谢谢我会试着报告一下情况。为了确保我理解代码:我们正在使用
    MSForms
    检查错误。它首先从剪贴板中获取数据,然后将其发送到msform,然后检查错误。如果检测到错误,则转到
    Img
    。这就是我有点迷茫的地方:
    GetText
    做什么?另外,为什么
    error=-2157221404?
    使用
    GetText
    从包含剪贴板镜像的
    DataObj
    中获取字符串。当剪贴板包含图像而不是字符串时,
    GetText
    函数返回错误。此错误号为-2147221404。当剪贴板为空或包含其他类型的对象时,必须检查是否会弹出相同的错误。这就是为什么我说这是一个解决办法,但它需要测试。期待您的反馈,祝您新年快乐