标签:VBA
如何控制Excel中的图片?这就是本文要介绍的内容。
情形1:在工作表中插入图片
下面的代码在当前工作表的当前单元格中插入图片并保持其原始大小。
Sub InsertImage()
Dim ws As Worksheet
Dim strImagePath As String
Dim dblImageLeft As Double
Dim dblImageTop As Double
Set ws = ActiveSheet
strImagePath = "C:\test\images\image01.jpg"
dblImageLeft = ActiveCell.Left
dblImageTop = ActiveCell.Top
'Width和Height = -1 意味着保持原始尺寸大小
ws.Shapes.AddPicture _
Filename:=strImagePath, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=dblImageLeft, _
Top:=dblImageTop, _
Width:=-1, _
Height:=-1
End Sub
最好将图像直接创建到对象变量中,然后可以使用变量来引用图像,而不需要知道图像的名称,如下面的代码所示。
Sub InsertImageUseVariable()
Dim myImage As Shape
Dim ws As Worksheet
Dim strImagePath As String
Dim dblImageLeft As Double
Dim dblImageTop As Double
Set ws = ActiveSheet
strImagePath = "C:\test\images\image01.jpg"
dblImageLeft = ActiveCell.Left
dblImageTop = ActiveCell.Top
Set myImage = ws.Shapes.AddPicture( _
Filename:=strImagePath, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=dblImageLeft, _
Top:=dblImageTop, _
Width:=-1, _
Height:=-1)
'使用图像
MsgBox myImage.Name
End Sub
上面的代码显示了图像的名称。
情形2:图片名称操作
一旦捕获了对象,就可以执行其它操作。下面的代码显示工作表中最后插入的图片的名称。
Sub GetNameOfLastInsertedImage()
Dim myImage As Shape
Set myImage = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
MsgBox myImage.Name
End Sub
下面的代码重命名一个现有图片。
Sub RenameImage()
Dim myImage As Shape
Dim ws As Worksheet
Set ws = ActiveSheet
Set myImage = ws.Shapes("Picture 2")
myImage.Name = "我的图片"
End Sub
情形3:获取图片属性
下面的代码获取通用图片属性。
Sub GetImageProperties()
Dim myImage As Shape
Dim ws As Worksheet
Set ws = ActiveSheet
Set myImage = ws.Shapes("Picture 2")
MsgBox "顶部: " & myImage.Top & vbNewLine & _
"底部: " & myImage.Left & vbNewLine & _
"宽度: " & myImage.Width & vbNewLine & _
"高度: " & myImage.Height & vbNewLine & _
"顺序: " & myImage.ZOrderPosition & vbNewLine & _
"名字: " & myImage.Name & vbNewLine & _
"左上角单元格: " & myImage.TopLeftCell & vbNewLine
End Sub
情形4:删除图片
下面的代码删除当前工作表中名为“Picture 2”的图片。
Sub DeleteImage()
Dim myImage As Shape
Dim ws As Worksheet
Set ws = ActiveSheet
Set myImage = ws.Shapes("Picture 2")
myImage.Delete
End Sub
情形5:使图片不可见
可以使图片不可见,但仍存在于工作表中,只是用户看不见而已。
Sub MakeImageInvisible()
Dim myImage As Shape
Dim ws As Worksheet
Set ws = ActiveSheet
Set myImage = ws.Shapes("Picture 4")
myImage.Visible = msoFalse
'使图片再可见
'myImage.Visible = msoTrue
End Sub
未完待续......
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。