ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16790|回复: 15

如何在EXCEL中设置“插入图片”按钮?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-5-25 10:31 | 显示全部楼层 |阅读模式
在excel表格中,放置"插入图片"按钮,然后每次点击这个按钮,就可以插入图片。谢谢!

TA的精华主题

TA的得分主题

发表于 2012-5-25 12:14 | 显示全部楼层
本帖最后由 秦源侠士 于 2012-5-25 12:15 编辑

在excel上方的选项卡右键/自定义快速访问工具栏/插入选项卡/插入来自文件的图片/添加/确定....

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-25 13:26 | 显示全部楼层
秦源侠士 发表于 2012-5-25 12:14
在excel上方的选项卡右键/自定义快速访问工具栏/插入选项卡/插入来自文件的图片/添加/确定....

英文版的在哪里啊?我的问题是我做了这个模板——“插入图片”的按钮,拿到这个表格的人只要点击这个我设置的按钮,就可以直接插入图片了,我总觉得你们都没有完全理解我这边的需求和问题所在?!

TA的精华主题

TA的得分主题

发表于 2012-5-25 14:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
借用罗老师的代码


Sub 建立图片目录()
  Dim st As String
  Dim file() As String, n As Integer, path As String, fd, T As String, PathStr As String, str As String, cell As Range
  On Error GoTo err

  
  Sheets(" ").Select '新建工作表
    Sheets.Add
   
    Range("A1").Select '选定单元格
  
  With Application  '引用应用程序
    '如果选择的对象不是单元格,则提示并退出程序
    If TypeName(Selection) <> "Range" Then MsgBox "请选择单元格" & Chr(10) & "将从您选择的单元格开始建立目录", 64, "提示": Exit Sub
    Set fd = .FileDialog(msoFileDialogFolderPicker)  '创建一个"浏览"对话框
    If fd.Show = -1 Then T = fd.SelectedItems(1) Else Exit Sub  '如果选择了文件夹,那么记录它的路径,否则退出程序
    PathStr = IIf(Right(T, Len(T)) = "\", "", "\")  '如果最后一位不是"\"则添加一位"\"
    str = Dir(T & PathStr & "*.jpg")  '获取JPG图片文件
    While Len(str) > 0    '如果文件名长度大于0
      n = n + 1     '累加变量
      ReDim Preserve file(1 To n)  '重新指定数组范围
      file(n) = Left(str, Len(str) - 4)   '将文件名写入数组中(去除右边四位,即后缀名)
      str = Dir()
    Wend
    Selection(1, 1).Resize(n, 1) = WorksheetFunction.Transpose(file)  '将数组写入选择的单元格,并向下纵向排列
    Selection(1, 1).Resize(n, 1).Select  '选择区域
    If MsgBox("要导入图片吗?", vbYesNo, "导入图片") = vbYes Then  '如果选择"是"
      On Error Resume Next
      i = .ActiveCell.RowHeight  '记录当前行高
      '让用户选择图片高度
      j = .InputBox("请输入你希望照片显示的高度(10-200之间)," & Chr(10) & "当前单元格高度为" & i & ",请根据需要按比例输入新高度。" & Chr(10) & "百宝箱将按图片的高与宽相应地调整单元格行高与列宽。", "【确认照片高度】", 40, , , , , 1)
      .ScreenUpdating = False  '并闭屏幕更新
      If j < 10 Then j = 10  '如果录入的值小于10,则按10处理,因为图片不适合太小
      If j > 200 Then j = 200  '如果大于200则按200处理
      For Each cell In Selection  '遍历所有单元格
        If cell = "" Then GoTo A  '如果单元格空白则执行标签"A"之后的代码
        myPath = T & "\" & cell.Text & ".jpg"  '指定文件名(带通配符)
        MyFile = Dir(myPath)  '获取文件名
        Do
          ActiveSheet.Pictures.Insert(T & "\" & MyFile).Select  '插入图片
          If err.Number = 1004 Then GoTo A  '如果有错误则执行下标签"A"后面的代码
          With Selection.ShapeRange  '引用插入的图片
            .Top = cell.Offset(0, 1).Top + 2  '图片的上边距比单元格小2
            .Left = cell.Offset(0, 1).Left + 2  '图片的左边距也比单元格小2,目的是防止图片压住单元格边框
            .Height = j    '设置图片高度
            PicWidth = .Width  '记录图片宽度
            NewWidth = Round(Round(PicWidth / 0.75 - IIf(PicWidth > 9, 5, 0), 0) / IIf(PicWidth > 9, 8, 13), 2)    ' 将图片宽度转换成列宽需要的值
            If NewWidth > MaxWidth Then cell.Offset(0, 1).ColumnWidth = NewWidth + 0.8                  '设置单元格列宽
            If NewWidth > MaxWidth Then MaxWidth = NewWidth
            cell.RowHeight = .Height + 4  '设置单元格行高
          End With
          MyFile = Dir
        Loop Until MyFile = ""
A:
        err.Clear  '清除错误
      Next cell
    End If
err:
   
    If err <> 0 Then MsgBox "您指定的文件夹下没有" & "*.jpg" & "图片文件!"  '如果有错误,那么提示没有文件
  End With

Columns("A:B").Select '把图片排序
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
End Sub

Sub 让图片适应单元格()
  Dim sh As Shape  '声明图形对象变量
  For Each sh In ActiveSheet.Shapes  '遍历本表所有图形对象
    sh.LockAspectRatio = False  '让图片可以高度、宽度分别调整,即不锁定长宽比
    sh.Left = sh.TopLeftCell.Left  '调整左边距
    sh.Top = sh.TopLeftCell.Top   '调整上边距
    sh.Width = sh.TopLeftCell.Width  '调整宽度
    sh.Height = sh.TopLeftCell.Height  '调整高度
  Next sh
End Sub
Sub 让单元格适应图片()
  Dim i As Integer, ShWidth, NewWidth, ShHeight, MaxWidth
  Application.ScreenUpdating = False  '关闭屏幕更新
  With ActiveSheet  '引用工作表
    For i = 1 To .Shapes.Count  '遍历所有图形对象
      .Shapes(i).Left = .Shapes(i).TopLeftCell.Left  '统一左边距
      .Shapes(i).Top = .Shapes(i).TopLeftCell.Top  '统一上边距
      .Shapes(i).TopLeftCell.RowHeight = .Shapes(i).Height  '统一高度
      '调整宽度,不是统一,而要以宽度最大的图片为标准,从而使所有图片都容纳进单元格中
      ShWidth = .Shapes(i).Width  '记录图片的宽度
      '将图片的宽度换算成可用于列宽的宽度(因为两个单位完全不同)
      NewWidth = Round(Round(ShWidth / 0.75 - IIf(ShWidth > 9, 5, 0), 0) / IIf(ShWidth > 9, 8, 13), 2)    ' 字符,最适合的列宽
      If MaxWidth < ShWidth Then  '如果图片在宽度大于变量MaxWidth
        .Shapes(i).TopLeftCell.ColumnWidth = NewWidth  '以换算后的宽度为标准设置单元格的宽度
        MaxWidth = ShWidth  '将图片的宽度赋予变量MaxWidth
      End If
    Next i
  End With
  Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-12 11:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xsy我可以很好 发表于 2012-5-25 14:20
借用罗老师的代码

太难了,没看懂,我记得读书的时候学过,感觉没这么难的。还有其他方法吗?

TA的精华主题

TA的得分主题

发表于 2012-6-12 13:00 | 显示全部楼层
SerenaChan 发表于 2012-6-12 11:26
太难了,没看懂,我记得读书的时候学过,感觉没这么难的。还有其他方法吗?


你要点击按扭执行恐怕要用vba

插入图片.rar (179.13 KB, 下载次数: 504)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-12 14:01 | 显示全部楼层
xsy我可以很好 发表于 2012-6-12 13:00
你要点击按扭执行恐怕要用vba

差不多就是你附件上的图片,但是我想要的效果不是按一下就自动有图片附上去,而是按一下,然后就会弹出浏览的窗口,然后寻找要附上去的图片。谢谢!

TA的精华主题

TA的得分主题

发表于 2012-6-19 10:40 | 显示全部楼层
请问你用的什么版本?我的2010里插入-图片就你说的这个功能
123123.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-19 16:03 | 显示全部楼层
310259276 发表于 2012-6-19 10:40
请问你用的什么版本?我的2010里插入-图片就你说的这个功能

10版本的,你没明白我的意思,我是要做一个“插入图片”的按钮,这样子,别人只要点击这个按钮,就可以插入要选择的图片了。

TA的精华主题

TA的得分主题

发表于 2012-6-22 12:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好像是一个控件,我懂你的意思,以前2003的时候做过,不过现在有点忘记。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-28 08:26 , Processed in 0.041870 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表