|
本帖最后由 wangg913 于 2015-7-27 21:26 编辑
本附件数据是从百度百科摘抄的,图片也是度娘而得到的。
1、批量导入图片
判断A列数据是否已经导入图片,如果没有图片,将图片放置在B列相应位置。
数据可以追加,追加数据时为避免重复导入图片,并且方便后期“查询模块”引用图片,将B列设置为识别符。
如B列相应单元格为空,则加载图片,否则表明已经载入了图片。
- Option Explicit
- Private Sub CommandButton1_Click()
- Dim I&
- Dim Picfile$, PicRng As Range
- Dim dCuisine, HasPicture
- dCuisine = Range("A3", Range("A3000").End(xlUp))
- HasPicture = Range("B3").Resize(UBound(dCuisine), 1)
- For I = 1 To UBound(dCuisine)
- '利用B列存放图片的单元格,设置一个识别符。
- '此识别符用于判断相关项目是否已经导入图片,如果识别符不为空,则判断已经导入了图片。
- '如果识别符为空,则查询是否存在图片,如存在就加载。
- If dCuisine(I, 1) <> "" And HasPicture(I, 1) = "" Then
- '取得图片文件名,常用的 bmp、jpg、png文件类型都可以
- Picfile = Dir(ThisWorkbook.Path & "\图片" & dCuisine(I, 1) & ".*")
- '如果查到匹配图片,则进行加载。
- If Picfile <> "" Then
- '存放图片的单元格。
- Set PicRng = Sheet2.Range("B" & I + 2)
- Picfile = ThisWorkbook.Path & "\图片" & Picfile
- '加载图片,并调整图片的大小与单元格大小适应。
- With Sheet2.Shapes.AddPicture(Picfile, msoTrue, msoTrue, _
- PicRng.Left + 2, PicRng.Top + 2, PicRng.Width - 4, PicRng.Height - 4)
- '图片对象更名,更名为A列项目名称,以便“查询模块”调用。
- .Name = dCuisine(I, 1)
- End With
- '添加识别符
- PicRng.Value = dCuisine(I, 1)
- End If
- End If
- Next
- End Sub
复制代码
2、查询引用图片
同上,如果识别符为空,直接引用工作表“批量导入”的图片。
- Option Explicit
- Private Sub CommandButton1_Click()
- Dim A&, PicRng As Range
- Dim dCuisine, HasPicture
- dCuisine = Range("A3", Range("A3000").End(xlUp))
- HasPicture = Range("B3").Resize(UBound(dCuisine), 1)
- For A = 1 To UBound(dCuisine)
- If dCuisine(A, 1) <> "" And HasPicture(A, 1) = "" Then
- On Error Resume Next
- If Sheet2.Shapes(dCuisine(A, 1)) Is Nothing Then
- GoTo ContinueFor
- End If
- Sheet2.Shapes(dCuisine(A, 1)).Copy
- Set PicRng = Range("B2").Offset(A)
- PicRng.Activate
- Sheet1.Paste
- With Selection
- .Left = PicRng.Left + 2
- .Top = PicRng.Top + 2
- .Height = PicRng.Height - 4
- .Width = PicRng.Width - 4
- .Name = dCuisine(A, 1)
- End With
- PicRng.Value = dCuisine(A, 1)
- End If
- ContinueFor:
- Next
- End Sub
复制代码
附件:
20150723-图片的导入与查询.rar
(1.75 MB, 下载次数: 825)
|
|