2012-10-31 19 views
1

我暫時放置並隱藏在Sheet1中的圖片。我選擇了這種方法,因爲我不希望將照片本地存儲在驅動器上。如何將工作表中的圖片轉換(剪切並粘貼)到另一個

然後,我有一個無模式的用戶窗體,並帶有一個按鈕,該按鈕應該將Sheet1中的圖片傳輸到ActiveSheet中的任何一個。

到目前爲止,我之前關閉工作簿中有下面的代碼隱藏圖片: (「論的錯誤」是在那裏,因爲,根據不同的用戶,畫面不會總是最終達到在Sheet1)

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim tempWs As Variant 
    Call HidePic 
End Sub 

Private Sub HidePic() 
    Dim tempWs As Variant 
    On Error Resume Next 
    For Each tempWs In ThisWorkbook.Worksheets 
     tempWs.Pictures.Visible = False 
    Next 
End Sub 

接下來,下面的代碼工作,但只在Sheet1中(在這種情況下,圖片存儲在其中)。當我切換到另一個工作表,然後點擊UserForm上的按鈕;無論存儲在「A1」中的數據被刪除,但沒有圖片被放置/粘貼。

Private Sub Pic_Click() 
    Dim tempWs As Variant 
    On Error Resume Next 
    For Each tempWs In ThisWorkbook.Worksheets 
     tempWs.Pictures.Visible = True 
     tempWs.Pictures.Select 
    Next 

    Selection.Cut 
    ActiveSheet.Range("A1").Activate 
    ActiveSheet.Paste 
End Sub 

附加信息:我用「選擇/ Selection.Cut」,而不是更短(更快?)「.Cut」只因爲,由於某種原因,只用切不會將圖片中的「A1 「

回答

2

如果在第一層上的圖片被稱爲Picture 1你可以試試這個

Private Sub Pic_Click() 
Dim objPic As Shape 
On Error Resume Next 
Set objPic = Sheets(1).Shapes("Picture 1") 
On Error GoTo 0 
If objPic Is Nothing Then Exit Sub 
objPic.Copy 
ActiveSheet.Range("a1").PasteSpecial 
objPic.Delete 
End Sub 
+0

這樣做,謝謝!雖然我確實必須將我在代碼中的循環合併到一起,因爲我不能僅指一個工作表。 – user1737389

0

您正在使用您的For Each tempWs在ThisWorkbook.Worksheets構造中遍歷所有工作表。 這應該工作:

Dim TempSht as Worksheet 
set tempSht = Thisworkbook.sheets(1) 
tempsht.Pictures.Visible = True 
tempsht.Pictures.Select 
+0

這並不畫面複製到activesheet。 – brettdj

+0

我應該像以前一樣在我的文章中說過:「取決於用戶,圖片不會總是在Sheet1中結束」。雖然你並不完全是過錯,因爲我的第一句話可能是誤導。 – user1737389

相關問題