如何将工作表中的图片转换(剪切并粘贴)到另一张图片

我有临时放置在Sheet1中的图片。 我select了这种方法,因为我不喜欢将图片存储在本地驱动器上。

然后,我有一个无模式UserForm与一个button,应该将Sheet1中的图片转移到ActiveSheet中的那一个。

到目前为止,我有以下代码来closures工作簿之前隐藏图片:('错误'在那里,因为,根据用户,图片不会总是最终在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上的button; 无论存储在“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 

附加信息:我使用“select/ Selection.Cut”,而不是更短(和更快?)“.Cut”,因为,由于某种原因使用剪切只是不把图片放在“A1”

如果你的第一张图片上的Picture 1被称为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 

您正在使用ForWorkWork.Worksheets构build中的For Each tempWs迭代所有工作表。 这应该工作:

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