Office中国论坛/Access中国论坛

标题: Access挑战Excel第十五期:图片浏览 [打印本页]

作者: roych    时间: 2016-4-7 03:08
标题: Access挑战Excel第十五期:图片浏览
出于减少代码量的考虑,这里不打算自定义文件夹(所以解压后不要改变相对路径哦),连按钮都省掉了,点击下方的导航器即可跳转记录。
代码不多,加上错误处理也就7行。
  1. Private Sub Form_Current()
  2.     On Error GoTo Err_Handler
  3.     Me.imgPicture.Picture = CurrentProject.Path & "\img" & Me.UserName & ".jpg"   
  4. Err_Exit:
  5.     Exit Sub
  6. Err_Handler:
  7.     MsgBox "无图片"
  8.     GoTo Err_Exit
  9. End Sub
复制代码
当然,也可以强行忽略错误,即改为(不过不太建议这么做):
  1. Private Sub Form_Current()
  2.     On Error Resume Next
  3.     Me.imgPicture.Picture = CurrentProject.Path & "\img" & Me.UserName & ".jpg"
  4. End Sub
复制代码
此外,我还写了一个宏。显然,宏在错误处理方面比较弱,进入新纪录时会弹出无法打开文件夹的错误提示。
[attach]58687[/attach][attach]58688[/attach]
-------------------------------------------------------------------------------------------------------------------

Excel据说是可以做到的,不过需要一点小技巧。
这里使用了定义名称和引用,不过当然是做不到子窗体模式的效果的。

作者: tmtony    时间: 2016-4-7 09:45
图片在企业管理中使用比较多。有实用价值
作者: 纸鸽    时间: 2016-4-7 11:01
[attach]58689[/attach]

里面是一个工作簿两个工作表,分别是列表模式和按钮模式。
我这个就用到了3行代码
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Application.Calculate
  3. End Sub
复制代码
不过里面用到了公式,和技巧。
用到的函数 cell函数 indirect函数
用到的技巧有照相机,定义名称。

这个应该是最容易学的做法,不知道大神们有没有办法优化。

这个做的太简陋了,不能随着文件夹的内容更改图片增删数量,如果要实现这些,需要不少的代码。我想到了方法,不过好像不知道代码的语法。。。。

@小妖同学   @蓝色幻想

作者: 纸鸽    时间: 2016-4-7 12:45
用vlookup的话不能做列表模式吧,我这个也要预先插入图片,不过这个可以通过代码解决,但是我不会写。。。。。
作者: purplerose    时间: 2016-4-7 14:04
^=^  ^-^
作者: 纸鸽    时间: 2016-4-7 16:28
[attach]58692[/attach]
谢谢

不过我想的不是批量插入图片,是动态插入图片,比如根据文件夹内的图片,每次打开工作簿,添加新的人,比如 文件夹内 添加了一个照片,文件名是周伯通131022111111111111男20160407后勤部13111111111,下次在打开这个工作簿,就自动添加这个人的信息和照片在表里了。或者,在表内新添加一个人的信息,会自动在添加与这个人名字对应文件名的照片。


作者: roych    时间: 2016-4-7 17:30
纸鸽 发表于 2016-4-7 16:28
谢谢

不过我想的不是批量插入图片,是动态插入图片,比如根据文件夹内的图片,每次打开工作簿,添加新 ...

大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给过了)。
方法2、由于图片没有filename属性,因此需要在单元格存储,然后通过历遍单元格来插入图片。
作者: 纸鸽    时间: 2016-4-7 18:10
roych 发表于 2016-4-7 17:30
大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给 ...

应该不用吧,我想的是打开工作簿的时候,先用dir提取文件夹里的图片文件名与最后修改时间存储在数组变量里,然后在用表内现在有人员信息与之作对比,多出来的图片直接添加,已经存在图片对比最后修改日期,如果有变动就直接修改,没变动就不用动了,这样不知道能不能实现,如果能,占用内存大小如何。。。。。
作者: 纸鸽    时间: 2016-4-7 18:17
roych 发表于 2016-4-7 17:30
大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给 ...

VBA可以直接调用CMD执行dir命令然后存储结果吗
作者: 764300778    时间: 2016-4-7 22:03
eeee
作者: 纸鸽    时间: 2016-4-8 09:36
可以做到子窗体效果的,我那个文件里面的列表模式就是
作者: pureshadow    时间: 2016-4-11 16:58
这东东用Excel做无代码版,确实可以,但现实中不太主张这样做,那么多张图片在一个工作簿里,要慢出人命的。
如果图片放文件夹里,那就得用代码了。
作者: roych    时间: 2016-4-11 17:14
pureshadow 发表于 2016-4-11 16:58
这东东用Excel做无代码版,确实可以,但现实中不太主张这样做,那么多张图片在一个工作簿里,要慢出人命的 ...

不过这功能的确很常见的,例如,工牌的打印,员工档案打印什么的。这里只做了窗体的,不过报表也是可以实现的。
作者: pureshadow    时间: 2016-4-11 20:26
roych 发表于 2016-4-11 17:14
不过这功能的确很常见的,例如,工牌的打印,员工档案打印什么的。这里只做了窗体的,不过报表也是可以实 ...

如果真的做工牌打印,我也许会用Word的邮件合并,那样不需要把大把的图片放在一个工作簿里。
作者: 纸鸽    时间: 2016-4-12 09:33
pureshadow 发表于 2016-4-11 20:26
如果真的做工牌打印,我也许会用Word的邮件合并,那样不需要把大把的图片放在一个工作簿里。

妖姐,有邮件合并的教程链接吗,我一点都不懂。。。
作者: pureshadow    时间: 2016-4-12 10:39
纸鸽 发表于 2016-4-12 09:33
妖姐,有邮件合并的教程链接吗,我一点都不懂。。。

不急,回头我做一个。
作者: 纸鸽    时间: 2016-4-12 11:11
pureshadow 发表于 2016-4-12 10:39
不急,回头我做一个。

谢谢妖姐,以后我改名叫妖弟弟得了
作者: roych    时间: 2016-4-12 23:49
纸鸽 发表于 2016-4-12 09:33
妖姐,有邮件合并的教程链接吗,我一点都不懂。。。

邮件合并的玩法,基本是把word作为模板来用,以域字段的形式读取由Excel(或者Access)来提供的其它数据。
最常见的应用就是HR的劳动合同。每个人的身份证、底薪等数据都不尽相同,这时候就可以把这些数据存储在Excel或者Access表里,然后通过邮件合并的做法,对不同的员工打印每个员工的劳动合同。

做起来并不难,先按一定格式排版好,留出这些位置(例如身份证号码什么的),然后按Word的邮件合并向导,引入数据,再把这些字段填充到预留的位置就完成了。不过我没试过图片部分。
作者: pureshadow    时间: 2016-4-17 10:17
Roy你那几张图片实在是太丑了,看我的……
作者: pureshadow    时间: 2016-4-18 09:57
邮件合并处理法,不废话,直接上视频(不过视频里废话挺多)
作者: 桑松木    时间: 2016-4-23 21:13
好好学习,天天向上
作者: znbcaozhiming    时间: 2016-7-26 18:03
高人啊
作者: 刘青梅    时间: 2016-12-11 08:20
学习
作者: yanwei82123300    时间: 2018-8-21 19:19
学习一下
作者: wuwu200222    时间: 2019-4-9 10:04
学习
作者: liumporite    时间: 2019-9-27 21:59
谢谢 看看 学习学习
作者: 灰太郎    时间: 2021-2-28 18:32
11111




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3