我将图片临时放置并隐藏在Sheet1中。我之所以选择这种方法,是因为我不希望将图片本地存储在我的驱动器上。
然后,我有一个无模式的UserForm,带有一个按钮,该按钮应该将图片从Sheet1传输到当前的ActiveSheet。
到目前为止,我有以下代码在关闭工作簿之前隐藏图片: ('On Error'在那里,因为取决于用户,图片不会总是在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
附加信息:我使用“Select / Selection.Cut”而不是更短(和更快?)“。Cut”只是因为出于某种原因使用Cut只会将图片放在“A1”中
答案 0 :(得分: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
答案 1 :(得分:0)
您在ThisWorkbook.Worksheets构造中使用For Each tempWs迭代所有工作表。 这应该有效:
Dim TempSht as Worksheet
set tempSht = Thisworkbook.sheets(1)
tempsht.Pictures.Visible = True
tempsht.Pictures.Select