设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 7291|回复: 30

Access挑战Excel第十五期:图片浏览

[复制链接]
发表于 2016-4-7 03:08:20 | 显示全部楼层 |阅读模式
出于减少代码量的考虑,这里不打算自定义文件夹(所以解压后不要改变相对路径哦),连按钮都省掉了,点击下方的导航器即可跳转记录。
代码不多,加上错误处理也就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
复制代码
此外,我还写了一个宏。显然,宏在错误处理方面比较弱,进入新纪录时会弹出无法打开文件夹的错误提示。

-------------------------------------------------------------------------------------------------------------------

Excel据说是可以做到的,不过需要一点小技巧。
游客,如果您要查看本帖隐藏内容请回复

这里使用了定义名称和引用,不过当然是做不到子窗体模式的效果的。

本帖子中包含更多资源

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

x

点击这里给我发消息

发表于 2016-4-7 09:45:32 来自手机 | 显示全部楼层
图片在企业管理中使用比较多。有实用价值
来自: 微社区

点击这里给我发消息

发表于 2016-4-7 11:01:40 | 显示全部楼层


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

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

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

@小妖同学   @蓝色幻想

本帖子中包含更多资源

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

x

点评

之前见过胡剑大神用vlookup来完成的例子,不过需要预先插入图片和控件。  发表于 2016-4-7 11:21

点击这里给我发消息

发表于 2016-4-7 12:45:51 | 显示全部楼层
用vlookup的话不能做列表模式吧,我这个也要预先插入图片,不过这个可以通过代码解决,但是我不会写。。。。。

点评

Excel批量插入图片:http://www.office-cn.net/thread-96744-1-1.html  发表于 2016-4-7 15:50
发表于 2016-4-7 14:04:37 | 显示全部楼层
^=^  ^-^

点击这里给我发消息

发表于 2016-4-7 16:28:56 | 显示全部楼层

谢谢

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

本帖子中包含更多资源

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

x
 楼主| 发表于 2016-4-7 17:30:43 | 显示全部楼层
纸鸽 发表于 2016-4-7 16:28
谢谢

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

大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给过了)。
方法2、由于图片没有filename属性,因此需要在单元格存储,然后通过历遍单元格来插入图片。

点击这里给我发消息

发表于 2016-4-7 18:10:14 | 显示全部楼层
roych 发表于 2016-4-7 17:30
大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给 ...

应该不用吧,我想的是打开工作簿的时候,先用dir提取文件夹里的图片文件名与最后修改时间存储在数组变量里,然后在用表内现在有人员信息与之作对比,多出来的图片直接添加,已经存在图片对比最后修改日期,如果有变动就直接修改,没变动就不用动了,这样不知道能不能实现,如果能,占用内存大小如何。。。。。

点击这里给我发消息

发表于 2016-4-7 18:17:56 | 显示全部楼层
roych 发表于 2016-4-7 17:30
大概需要执行一个插入图片的操作吧。
方法1、增删改时,先删除所有旧的图片,然后批量插入(链接已经给 ...

VBA可以直接调用CMD执行dir命令然后存储结果吗

点评

1、VBA里本身有dir函数,用于判断文件是否存在。 2、如果执行cmd的话,可以考虑使用shell函数,两者非常相似。大部分命令都可以改为:shell"命令字符串" 来执行。 3、内存占用情况可能会因为文件的多少受影响   发表于 2016-4-7 20:14
发表于 2016-4-7 22:03:57 | 显示全部楼层
eeee
回复

使用道具 举报

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 03:07 , Processed in 0.155824 second(s), 40 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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