使用VBA复制、插入、移动、删除和控制图片1

2023-08-29 21:08:47 浏览数 (2)

标签:VBA

如何控制Excel中的图片?这就是本文要介绍的内容。

情形1:在工作表中插入图片

下面的代码在当前工作表的当前单元格中插入图片并保持其原始大小。

代码语言:javascript复制
Sub InsertImage()
 Dim ws As Worksheet
 Dim strImagePath As String
 Dim dblImageLeft As Double
 Dim dblImageTop As Double
 
 Set ws = ActiveSheet
 strImagePath = "C:testimagesimage01.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

最好将图像直接创建到对象变量中,然后可以使用变量来引用图像,而不需要知道图像的名称,如下面的代码所示。

代码语言:javascript复制
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:testimagesimage01.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:图片名称操作

一旦捕获了对象,就可以执行其它操作。下面的代码显示工作表中最后插入的图片的名称。

代码语言:javascript复制
Sub GetNameOfLastInsertedImage()
 Dim myImage As Shape
 Set myImage = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
 MsgBox myImage.Name
End Sub

下面的代码重命名一个现有图片。

代码语言:javascript复制
Sub RenameImage()
 Dim myImage As Shape
 Dim ws As Worksheet
 
 Set ws = ActiveSheet
 Set myImage = ws.Shapes("Picture 2")
 myImage.Name = "我的图片"
End Sub

情形3:获取图片属性

下面的代码获取通用图片属性。

代码语言:javascript复制
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”的图片。

代码语言:javascript复制
Sub DeleteImage()
 Dim myImage As Shape
 Dim ws As Worksheet
 
 Set ws = ActiveSheet
 Set myImage = ws.Shapes("Picture 2")
 
 myImage.Delete
End Sub

情形5:使图片不可见

可以使图片不可见,但仍存在于工作表中,只是用户看不见而已。

代码语言:javascript复制
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

未完待续......

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞