excel 表格实现类似图片预览的方法
1、在表格文档的相同目录下新建一个“图片”文件夹,并且把图片都复制到这个文件夹里面,注意图片的名称要和表格里面的一样哦

2、开启宏功能,如果已经开启了可以跳过这一步,如果使用的是WPS,需要在网上下载一个WPS宏插件,百度一下会有很多

3、打开vba编辑器

4、把以下代码复制到新建的模块对象里:
Option Explicit
Option Compare Text
Sub insertPicture()
Application.ScreenUpdating = False
Dim jiaoji As Object, wenjian
Set jiaoji = Intersect(Selection, Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row))
'''这行的意思是想要显示图片的那一列,"A2:A"表示从A2开始直到A列最后一个有内容的单元格,如果是其他列,把A改成其他的列号,然后把1改成对应的列数
If Not jiaoji Is Nothing Then
wenjian = Dir(ThisWorkbook.Path & "\图片\")
Do
If wenjian = ActiveCell.Value & ".JPG" Then
Dim tupian As Object
Set tupian = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\图片\" & ActiveCell.Value & ".jpg") '''这里的“图片”是文件夹的名称,只要和文件夹的名称保持一致就可以随意更改的
With tupian
.Name = "唯独雨中影" & ActiveCell.Value & ".jpg"
.Height = 285 '''285是图片的高度,可以自行更改
.Left = ActiveCell(1, 2).Left
End With
GoTo tuichu
Else
wenjian = Dir
End If
Loop Until wenjian = ""
End If
Set jiaoji = Nothing
Set tupian = Nothing
tuichu:
Application.ScreenUpdating = False
End Sub
Sub deleteImages()
Dim pic As Shape
For Each pic In ActiveSheet.Shapes
If pic.Name Like "*唯独雨中影*" Then
pic.Delete
End If
Next
Set pic = Nothing
End Sub

5、这里要注意一下,左边那里会显示工作簿里面所有工作表的名称,这个操作在哪个工作表,双击这个工作表然后把下面的代码复制进去就可以了
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '''选择的单元格改变时触发的事件
If Selection.Count < 2 Then
Call deleteImages
Call insertPicture
Else
Call deleteImages
End If
End Sub

6、添加完之后保存就可以看到这个类似图片预览的功能了,

