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

时间:2016-12-30 05:38:44

标签: excel-vba vba excel

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

  1. 用户截取屏幕截图,例如使用截图工具
  2. 代码检查剪贴板是否包含图像(代码仅在剪贴板保存图像时运行)
  3. 然后,代码会将剪贴板中的图像粘贴到指定区域(例如Cell J55)。
  4. 同时,我想给这个粘贴的图像一个ID(例如,imgSource1),以便用户以后可以在另一张纸上重新使用这个图像(比如,在表2上,调用imgSource1并粘贴它)在那里)
  5. 到目前为止我已经学到了:如何在所述位置粘贴到excel中。我还没有能够找到一个工作代码来检查剪贴板是否正在保存图像。现在我需要弄清楚如何只粘贴图像(如何检查剪贴板在粘贴之前只保留图像)。以下代码似乎对我不起作用。

    Sub btn_addImg1()
    If (Clipboard.GetImage() != null)
        Sheet1.Paste Destination:=Range("J55"), Link:=False
    Else
        'do nothing
    End If
    

    " If (Clipboard.GetImage()"行是红色的,它告诉我它需要一个")" at" !="。

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

    谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了一些解决方法,但它需要测试。

不过,你需要去工具 - >参考文献 - > Microsoft Forms 2.0 Oject Librarty使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