如何通过VBA调用MS Access内置位图设置命令按钮图片?
解决方案:在VBA中为Access按钮分配内置位图
可以直接通过加载MSACCESS.EXE中的内置资源位图实现需求,无需依赖外部文件或附件字段。Access的「图片生成器」内置位图都内嵌在自身的主程序文件中,通过LoadPicture函数即可调用这些资源。
实现步骤
确认内置位图的资源ID
使用资源查看工具(如Resource Hacker)打开Access安装目录下的MSACCESS.EXE,展开Bitmap节点即可查看所有内置位图的资源ID。常见VCR按钮对应的ID示例:- 首记录:100
- 上一条:101
- 下一条:102
- 末记录:103
- 新增:104
- 保存:106
在VCR按钮类中添加图片赋值逻辑
在类的初始化过程中,获取目标按钮后,调用LoadPicture加载对应资源ID的位图:
Option Explicit Private frm As Form Private cmdFirst As CommandButton Private cmdPrevious As CommandButton Private cmdNext As CommandButton Private cmdLast As CommandButton Private cmdAdd As CommandButton Private cmdSave As CommandButton Public Sub Initialize(ParentForm As Form) Set frm = ParentForm ' 根据按钮名称获取窗体上的控件 Set cmdFirst = frm.Controls("cmdVCRFirst") Set cmdPrevious = frm.Controls("cmdVCRPrevious") Set cmdNext = frm.Controls("cmdVCRNext") Set cmdLast = frm.Controls("cmdVCRLast") Set cmdAdd = frm.Controls("cmdVCRAdd") Set cmdSave = frm.Controls("cmdVCRSave") ' 为每个按钮分配内置位图 AssignBuiltInIcon cmdFirst, 100 AssignBuiltInIcon cmdPrevious, 101 AssignBuiltInIcon cmdNext, 102 AssignBuiltInIcon cmdLast, 103 AssignBuiltInIcon cmdAdd, 104 AssignBuiltInIcon cmdSave, 106 End Sub Private Sub AssignBuiltInIcon(cmd As CommandButton, resourceID As Integer) Dim accessExePath As String ' 获取Access安装目录下的主程序路径 accessExePath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE" ' 加载指定ID的内置位图 cmd.Picture = LoadPicture(accessExePath, vbLPLong, vbLPColor, resourceID) ' 明确设置图片类型为位图 cmd.PictureType = acBitmap End Sub
关键说明
- 无外部依赖:所有图片资源均来自Access自身程序文件,无需额外存储任何文件或数据库附件。
- 版本兼容性:不同Access版本的
MSACCESS.EXE资源ID可能略有差异,建议在目标版本中用资源工具确认准确ID。 - 调用方式:在窗体的
Load事件中初始化该类即可完成按钮图片的自动设置:Private vcrButtons As clsVCRButtons Private Sub Form_Load() Set vcrButtons = New clsVCRButtons vcrButtons.Initialize Me End Sub
内容的提问来源于stack exchange,提问作者Robert R
相关产品推荐
相关产品推荐

