前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VBA复制、插入、移动、删除和控制图片1

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

作者头像
fanjy
发布2023-08-29 21:08:47
1.1K0
发布2023-08-29 21:08:47
举报
文章被收录于专栏:完美Excel

标签: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:\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

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

代码语言: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:\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:图片名称操作

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

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

未完待续......

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档