ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 程序开发] 【83期】Image控件调用工作表单元格图片或批注图片[已小结]

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-22 15:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zhaogang1960 于 2011-11-22 16:38 编辑

小结:
首先感谢冻版主把此题目从开放式竞赛专区转为正式竞赛题。


本题原来目的在于挖掘调用excel中的单元格或批注中图片更简单的方法,为了不限制大家的思路,取消了api技术的限制。使用api或图表技术调用excel单元格或批注中图片是成熟技术,论坛中有很多例子,大家有兴趣可以搜一下,下面链接是一个api技术调用excel中图片例子:


VBA调用excel中的图片

http://club.excelhome.net/thread-372773-1-1.html

使用另存为网页可以分离出excel单元格或批注中图片,7楼oyzhjr坛友使用的就是此法,Excel2003另存为网页可以得到jpg图片,默认情况下20072010分离单元格图片却是png图片,这时需要设定DefaultWebOptions对象的AllowPNG属性,可分离出gif图片:
Application.DefaultWebOptions.AllowPNG= False



下面给出这种简单方法的代码和附件

1Image控件调用工作表单元格图片(兼容20072010)

  1. Private Sub TextBox1_Change() '调用单元格图片
  2.     Image1.Picture = LoadPicture("")
  3.     If TextBox1.Text = "" Then Exit Sub
  4.     Dim wb As Workbook, c As Range
  5.     Set c = Sheet1.[a:a].Find(TextBox1.Text, , , xlWhole)
  6.     If Not c Is Nothing Then
  7.         Application.ScreenUpdating = False
  8.         c.Offset(, 1).Select
  9.         If Dir(ThisWorkbook.Path & "\Book1.htm") <> "" Then Kill ThisWorkbook.Path & "\Book1.htm"
  10.         ThisWorkbook.PublishObjects.Delete
  11.         Application.DefaultWebOptions.AllowPNG = False
  12.         With ThisWorkbook.PublishObjects.Add(xlSourceRange, ThisWorkbook.Path & "\Book1.htm", ActiveSheet.Name, c.Offset(, 1).Address, xlHtmlStatic, "Book1", "")
  13.             .Publish (True)
  14.             .AutoRepublish = False
  15.         End With
  16.         If Application.Version <= 11 Then '2003
  17.             Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Book1.files\Book1_image002.jpg")
  18.         Else '20072010
  19.             Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Book1.files\Book1_image002.gif")
  20.         End If
  21.         Image1.PictureSizeMode = 1
  22.         Cells(1, 1).Select
  23.         Application.ScreenUpdating = True
  24.     End If
  25. End Sub
复制代码



2Image控件调用工作表批注图片

  1. Private Sub TextBox1_Change()
  2.     Image1.Picture = LoadPicture("")
  3.     If TextBox1.Text = "" Then Exit Sub
  4.     Dim wb As Workbook, c As Range, p$
  5.     Set c = Sheet1.[a:a].Find(TextBox1.Text, , , xlWhole)
  6.     If Not c Is Nothing Then
  7.         Application.ScreenUpdating = False
  8.         Application.DisplayAlerts = False
  9.         If Dir(ThisWorkbook.Path & "\Book1.htm") <> "" Then Kill ThisWorkbook.Path & "\Book1.htm"
  10.         p = ThisWorkbook.Path & "\Book1.files"
  11.         Set wb = Workbooks.Add(xlWBATWorksheet)
  12.         c.Copy wb.Sheets(1).[a1]
  13.         wb.SaveAs Filename:=ThisWorkbook.Path & "\Book1.htm", FileFormat:=xlHtml
  14.         wb.Close False
  15.         Image1.Picture = LoadPicture(p & Dir(p & "*.jpg"))
  16.         Image1.PictureSizeMode = 1
  17.         Application.DisplayAlerts = True
  18.         Application.ScreenUpdating = True
  19.     End If
  20. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

点评

学习,不知道另存为这个用法。谢谢  发表于 2011-11-22 16:32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-11-22 16:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
全对{:soso_e103:},羡煞旁人。

TA的精华主题

TA的得分主题

发表于 2011-11-22 17:04 | 显示全部楼层
知道另存,可是不知道怎么一一对应
Image1.Picture = LoadPicture(p & Dir(p & "*.jpg"))

这样就能一一对应么,困惑了好久

TA的精华主题

TA的得分主题

发表于 2011-11-22 17:11 | 显示全部楼层
请问赵版,3分的答案什么啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-22 17:12 | 显示全部楼层
hzhb14796 发表于 2011-11-22 17:04
知道另存,可是不知道怎么一一对应
Image1.Picture = LoadPicture(p & Dir(p & "*.jpg"))

已知一个单元格有一个含有1张图片的批注,这个含有批注的单元格复制到新建工作簿中另存为网页,不管有几个图片,只要Dir(p & "*.jpg")<>""就可以了,不需要一一对应

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-22 17:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zm0115 发表于 2011-11-22 17:11
请问赵版,3分的答案什么啊

本题满分2分,3分需要使用新方法且兼容性好,说实在的,我给出的办法也不能得3分,所以本题我得了1分,哈哈

点评

:) 那个多工作表的SQL题,丢了一分真冤。49张表版主还提示了的,唉!!  发表于 2011-11-22 17:34

TA的精华主题

TA的得分主题

发表于 2011-11-22 17:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习了,原来还可以用另存为网页的方法

TA的精华主题

TA的得分主题

发表于 2011-11-23 08:29 | 显示全部楼层
zhaogang1960 发表于 2011-11-22 17:18
本题满分2分,3分需要使用新方法且兼容性好,说实在的,我给出的办法也不能得3分,所以本题我得了1分,哈 ...

我说呢,后来想找批注属性或方法直接调用的也没找到

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-23 09:03 | 显示全部楼层
hzhb14796 发表于 2011-11-23 08:29
我说呢,后来想找批注属性或方法直接调用的也没找到

谁说的?两种情况都可以使用另存为网页法
下面Image控件调用工作表单元格图片方法,和小结中的Image控件调用工作表批注图片使用的方法一致——另存为网页
请看附件:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

TA的精华主题

TA的得分主题

发表于 2011-11-23 10:15 | 显示全部楼层
zhaogang1960 发表于 2011-11-23 09:03
谁说的?两种情况都可以使用另存为网页法
下面Image控件调用工作表单元格图片方法,和小结中的Image控件 ...

操作另外的工作薄,我还没有式过,感觉上不好操作
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:45 , Processed in 0.039845 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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