2016-12-30 123 views
1

我想要允許用戶在Excel中執行以下操作。這可能會使用宏來實現。Excel-vba:只從剪貼板粘貼圖像+允許稍後再使用

  1. 用戶需要的屏幕截圖,像截圖工具
  2. 代碼檢查是否剪貼板包含的圖像或不(代碼僅僅運行時剪貼板保持圖像)然後
  3. 代碼將粘貼在圖像剪貼板粘貼到指定區域(例如單元格J55)。
  4. 與此同時,我想給這個粘貼的圖像一個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()"線是紅色,它告訴我,它需要一個‘)’在」 !=」。

需要注意的是一個本地驅動器上保存的圖像是不是我的情況一個可行的解決方案它從剪貼板粘貼。

謝謝!

回答

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 
+0

謝謝。我會嘗試並報告它是如何發生的。爲了確保我理解了代碼:我們使用'MSForms'來檢查錯誤。它首先從剪貼板抓取數據,然後將其發送到msform,然後檢查錯誤。如果檢測到錯誤,則進入「Img」。這是我有點失落的地方:GetText是做什麼的?另外,爲什麼'error = -2157221404?' – Baineteo

+0

您使用'GetText'從'DataObj'中獲取一個String,它包含剪貼板的一個鏡像。雖然剪貼板包含圖像,而不是String,但GetText函數返回錯誤。這個錯誤號是-2147221404。當剪貼板爲空或者包含其他類型的對象時,您必須檢查是否彈出相同的錯誤。這就是爲什麼我說這是一些解決方法,但它需要測試。期待您的反饋,祝您新年快樂! :) – Limak