|
楼主 |
发表于 2011-8-10 09:38
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
其实这儿关于图片用的VBA特简单,宏分为3部分:- Private Sub Image1_Click() '点击图片放大或缩小图片
- 'N3记录了图片状态(不是理想的办法)
- If Range("N3") = 1 Then '若为"1"
- G = 0.5 '放大为0.5倍(缩小)
- Else
- G = 2 '放大为2倍
- End If
- With Sheet1.Shapes("Image1")
- .ScaleWidth G, msoFalse, msoScaleFromTopRight '调整宽度
- .ScaleHeight G, msoFalse, msoScaleFromBottomRight '调整高度
- End With
- Range("N3") = -Range("N3") '状态记录反转
- End Sub
- Private Sub Image1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) '双击调入或更改图片
- On Error Resume Next '若出现错误则运行下一条
- FileToOpen = Application.GetOpenFilename("上传照片(*.jpg),*.jpg") '打开文件选择对话框
- If FileToOpen <> False Then '如果选择了图片文件
- Kill ThisWorkbook.Path & "\图片" & Range("L2") & ".jpg" '删除以L2内容为名称的图片
- Dim fso As New FileSystemObject
- fso.CopyFile FileToOpen, ThisWorkbook.Path & "\图片" '将图片文件复制到"图片"目录下
- OldName = ThisWorkbook.Path & "\图片" & Mid(FileToOpen, InStrRev(FileToOpen, "") + 1, Len(FileToOpen))
- '获取原文件名称及路径
- NewName = ThisWorkbook.Path & "\图片" & Range("L2") & ".jpg" '获取L2为名称的图片名称及路径
- Name OldName As NewName '更改图片文件名称
- Err.Clear '若出现错误则清除信息
- End If
- Sheet1.Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\图片" & Range("L2") & ".jpg") '工作表调入新图片
- End Sub
- Private Sub Worksheet_Change(ByVal Target As Range) '自动调入图片
- On Error Resume Next
- If Target.Address = "$L$2" Then '若L2内容被修改
- With Sheet1
- If Dir(ThisWorkbook.Path & "\图片" & Range("L2") & ".jpg") <> "" Then '若存在对应图片
- .Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\图片" & Range("L2") & ".jpg") '调入图片
- ElseIf Dir(ThisWorkbook.Path & "\图片" & Range("L2") & ".jpg") = "" Then '若没有对应图片
- .Image1.Picture = LoadPicture(ThisWorkbook.Path & "\图片\没有图片" & ".jpg") '调用"没有图片.jpg"
- End If
- End With
- End If
- End Sub
复制代码 |
|