ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-24 18:55 | 显示全部楼层 |阅读模式
本帖最后由 zhaogang1960 于 2011-11-22 17:19 编辑

1.答题前请先阅读最新规则:正式竞赛区运行规则说明
2.可跟贴直接发答案、上传答案附件

任选一题,方法不限,答案正确者可得分,欢迎广大VBA爱好者答题

评分:
1.总分2分。
2.精彩答案另加分。

截至日期:2011-11-21前



效果:





该贴已经同步到 zhaogang1960的微博

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-10-27 23:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
占住一楼,研究研究。

TA的精华主题

TA的得分主题

发表于 2011-10-28 06:50 | 显示全部楼层
  1. Private Sub TextBox1_Change()
  2.     Dim i%
  3.     Dim rng As Range
  4.     For i = 2 To Sheet1.[a65536].End(3).Row
  5.         If Sheet1.Cells(i, 1).Value = VBA.Val(Me.TextBox1.Value) Then
  6.             Application.ScreenUpdating = False
  7.             Set rng = Sheet1.Cells(i, 1)
  8.             rng(1, 2).CopyPicture
  9.             With Sheet1.ChartObjects.Add(0, 0, rng(1, 2).Width, rng(1, 2).Height).Chart
  10.                 .Paste
  11.                 .Export ThisWorkbook.Path & "" & "tupian" & ".jpg", "JPG"
  12.                 .Parent.Delete
  13.             End With
  14.             Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & "tupian.jpg")
  15.             Application.ScreenUpdating = True
  16.             Kill ThisWorkbook.Path & "" & "tupian.jpg"
  17.         End If
  18.     Next
  19. End Sub
复制代码

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-10-28 07:16 | 显示全部楼层
  1. Private Sub TextBox1_Change()
  2.     Dim i%
  3.     Dim rng As Range
  4.     For i = 1 To Sheet1.[a65536].End(3).Row
  5.         If Sheet1.Cells(i, 1).Value = VBA.Val(Me.TextBox1.Value) Then
  6.             Application.ScreenUpdating = False
  7.             Application.DisplayCommentIndicator = xlCommentAndIndicator
  8.             Set rng = Sheet1.Cells(i, 1)
  9.            rng.Comment.Shape.CopyPicture
  10.             With Sheet1.ChartObjects.Add(0, 0, rng.Comment.Shape.width, rng.Comment.Shape.height).Chart
  11.                 .Paste
  12.                 .Export ThisWorkbook.Path & "" & "tupian" & ".jpg", "JPG"
  13.                 .Parent.Delete
  14.             End With
  15.             Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & "tupian.jpg")
  16.             Application.DisplayCommentIndicator = xlCommentIndicatorOnly
  17.             Application.ScreenUpdating = True
  18.             Kill ThisWorkbook.Path & "" & "tupian.jpg"
  19.         End If
  20.     Next
  21. End Sub
复制代码
附件有点大。。。

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2011-10-29 00:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
边查帮助边做的,老师看看这样符合要求不:


本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-10-30 20:51 | 显示全部楼层
本帖最后由 xmyjk 于 2011-11-21 22:02 编辑

均API直接访问剪贴板,读取图片至图片控件中。采用这种方法的好处是,不需要导出图片成文件,再导入控件,另外直接从剪贴板访问图片,图片的质量也比较清晰。

题一:使用(BottomRightCell+TopLeftCell)/2确定图片准确的单元格位置,避免由于不小心移动了图片导致报错。

题二:程序使用了,如果rng.Comment.Shape.Fill.Type = msoFillPicture,来判断批注里面是否植入了自定义图片作为背景,保证了程序的稳定性。


本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-10-31 21:31 | 显示全部楼层
本帖最后由 oyzhjr 于 2011-10-31 21:44 编辑





题一与题二基本一致,知道另存为的方法就可以了。

以下是代码,请高手指导

Private Sub TextBox1_Change()
Rem   ++++++++++++++++++++++++++算法说明++++++++++++++++++++++++++++++
'如果textbox1.text 不为空,则进行查找
'查找所在行的行号,选中整行
'另存temp为网页文件
'Image1的路径设定为图片文件的路径
'删除TEMP文件

Dim FSO
Dim row_get As Integer
Dim xuehao As String
Dim rnga As Range
Dim js_a As Integer

xuehao = TextBox1.Text
If xuehao = "" Then Exit Sub
With ThisWorkbook.ActiveSheet
    js_a = 1
    Do
        If .Cells(js_a, 1).Value = xuehao Then
            row_get = js_a
            Exit Do
        End If
        js_a = js_a + 1
        If js_a = 1000 Then                 '防错
            Exit Sub
        End If
    Loop
   
    Set rnga = .Range(.Cells(row_get, 1), .Cells(row_get, 3))
    rnga.Select
End With

ThisWorkbook.PublishObjects.Delete
With ThisWorkbook.PublishObjects.Add(xlSourceRange, ThisWorkbook.Path & "\temp.htm", "Sheet1", rnga.Address, xlHtmlStatic, "temp", "")
    .Publish (True)
    .AutoRepublish = False
End With

Image1.Picture = LoadPicture(ThisWorkbook.Path & "\temp.files\temp_image002.jpg")

On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")            '用FSO删除多余的文件及目录
FSO.DeleteFolder ThisWorkbook.Path & "\temp.files", True
FSO.DeleteFile ThisWorkbook.Path & "\temp.htm", True

Rem ==============================================================
End Sub

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-11-3 16:26 | 显示全部楼层
请问楼主,Image控件调用工作表单元格图片,是指调用单元格内包含的shape还是单元格在屏幕上显示的图片?

本帖子中包含更多资源

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

x

点评

小fisher坛友:是指插入到单元格的图片,本题本来限制使用api,使用最简单的方法来实现,为不冷场取消了限制  发表于 2011-11-3 16:32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-11-5 23:00 | 显示全部楼层
这题似乎比多表查询简单,但为什么答题人这么少?是不是我哪里做的不符合要求?
  1. Private Sub TextBox1_Change()
  2. Dim t
  3. Dim rng As Range
  4. Me.Image1.Picture = LoadPicture()
  5. For Each rng In Range("a2:a4")
  6.     If Me.TextBox1.Text = rng Then
  7.         t = ThisWorkbook.Path & "\test.gif"
  8.         rng.Offset(0, 1).CopyPicture xlScreen, xlPicture
  9.         With Sheet1.ChartObjects.Add(0, 0, Me.Image1.Width, Me.Image1.Height).Chart
  10.         .Paste
  11.         .Export t, "gif"
  12.         .Parent.Delete
  13.         End With
  14.         Me.Image1.Picture = LoadPicture(t)
  15.         Kill t
  16.     Exit For
  17.     End If
  18. Next
  19. End Sub
复制代码

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-11-6 12:39 | 显示全部楼层
本帖最后由 wyf22006 于 2011-11-6 12:49 编辑

交上答案在附件中

本帖子中包含更多资源

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

x

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-17 01:56 , Processed in 0.041027 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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