VBA-Track Picture
Public Sub Q() Application.ScreenUpdating = False Dim PicName$, pand&, k&, PicPath, i, p, n, PicArr, TitleRow Dim PicNameCol, PicPath2, PicPath3, TPnameCol, TPCol%, m% Dim mypath$, myname$ mypath = ThisWorkbook.Path & "\" myname = Dir(mypath & "*.jpg") i = 2 PicCol = 1 '图片名称列 TPCol = 2 '图片列 'PicPath2 = ThisWorkbook.Path & "\" 'PicArr = Array(".jpg", ".jpeg", ".bmp", ".png", ".gif") '图片格式 Do While myname <> "" If myname <> ThisWorkbook.Name Then 'ActiveSheet.Shapes.AddPicture mypath & myname, True, True, _ Cells(i, TPCol).Left, Cells(i, TPCol).Top, _ Cells(i, TPCol).Width, Cells(i, TPCol).Height Set shp = Sheet1.Shapes.AddPicture(mypath & myname, msoFalse, msoCTrue, 0, 0, -1, -1)
With shp '裁剪 .PictureFormat.CropTop = 30 '下移裁剪,裁剪上边 .PictureFormat.CropLeft = 30 '右移裁剪,裁剪左边 .PictureFormat.CropBottom = 30 '上移裁剪,裁剪下边 .PictureFormat.CropRight = 30 '左移裁剪,裁剪右边 '裁剪 '移动旋转 '通常移动距离都是和裁剪相对应的,这样图才能在指定单元格的位置。 .IncrementLeft -30 '相对图片初始位置水平移动正数向右,负数向左 .IncrementTop -30 '相对图片初始位置垂直移动正数向下,负数向上 .IncrementRotation 0 '相对图片初始位置中心旋转 '移动旋转 '大小 .LockAspectRatio = msoFalse '图片纵横比锁定为msoTrue,高度和宽度调一个值整个图就会变
.Left= Cells(i, TPCol).Left
.Top=Cells(i, TPCol).Top .Height = 200 ' 高度 .Width = 150 '宽度 '大小 End With ThisWorkbook.Worksheets(1).Cells(i, 1) = myname End If myname = Dir i = i + 1 Loop
ActiveSheet.Pictures.Insert(i).Select '用变量插图片
删除全部图片的一种方法 Dim Sh As Shape '定义一个图形的变量 For Each Sh In ActiveSheet.Shapes '遍游活动表里的所有图形组件 If Sh.Name Like "Picture *" Then '如果图形对象的名称里有“Picture *”通配的往下执行,因为图片对象默认对象名称是Picture 数字 Sh.Select '选择图片名称的对象 Selection.Delete '删除图片对象 End If Next Sh