|
- Sub 选择单元格名称插入图片()
- ' 不要使用OERN,除非必需
- 'On Error Resume Next
- Application.ScreenUpdating = True
- Set fd = Application.FileDialog(msoFileDialogFolderPicker)
- If fd.Show = -1 Then
- t = fd.SelectedItems(1)
- Else
- MsgBox "未选择文件夹,程序结束"
- Exit Sub
- End If
- Dim rng As Range, Shp As Shape, cell As Range
- ' n = InputBox("请输入插入图片的列")
- N = 3 ' 测试
- Dim rTab As Range: Set rTab = Range("A1").CurrentRegion.Columns(2)
- Set rTab = rTab.Resize(rTab.Rows.Count - 1).Offset(1)
- Dim rVis As Range
- On Error Resume Next
- Set rVis = rTab.SpecialCells(xlCellTypeVisible)
- On Error GoTo 0
- If rVis Is Nothing Then Exit Sub
- If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
- For Each rng In rVis ' 不要依赖于Selection,可能导致误操作
- dz = t & "" & rng.Value & ".jpg"
- If Len(Dir(dz)) > 0 Then
- Z = rng.Offset(0, N - 2).Left
- d = rng.Offset(0, N - 2).Top
- k = rng.Offset(0, N - 2).Width
- G = rng.Offset(0, N - 2).Height
- ActiveSheet.Shapes.AddPicture dz, 1, 1, Z, d, k, G
- Next
- Next rng
- Call 图片居中
- ' ActiveCell.Select 这句代码没有意义
- ' ActiveCell.Offset(0, 0).Select '定位到当前活动单元格 , 定位到当前活动单元格下一行单元格 ActiveCell.Offset(1, 0)
- MsgBox "图片导入数量 " & ActiveSheet.Shapes.Count & "个" '统计图片数量
- Application.EnableEvents = True '让事件生效
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|