在Excel表格中使用VBA在窗体中预览图片,Excel预览图

阿芳同学_4769

阿芳同学_4769

2026-08-03

517人浏览

原创

要在excel里实现点个按钮、直接在弹出的窗体里预览图片的效果,核心逻辑其实很简单:先插入userform窗体,往里面放一个image控件和一个操作按钮,按钮代码调用 application.getopenfilename 调出选图窗口,再用 loadpicture 把选中的图片加载到image控件里就行。本次操作环境是microsoft 365版本的excel,提醒大家最后保存文件一定要选 .xlsm 格式,不然写好的vba代码存不住。

第一步:插入窗体

Alt + F11 快捷键打开VBA编辑器,在左边的工程面板里选中你当前正在编辑的工作簿,点顶部菜单栏的「插入」-「用户窗体」就行。刚生成的窗体默认名称是 UserForm1,后面所有配套代码都是按这个默认名写的,要是你自己改了窗体名,后面的运行入口代码也得跟着调整,不然运行会报错哦。

Excel VBA编辑器中通过插入菜单创建UserForm窗体

第二步:放入预览控件

在弹出来的工具箱里选Image控件,拖到窗体中间当图片预览区,再拖一个CommandButton普通按钮放旁边就好。建议顺手把Image控件的 Name 属性改成 imgPreview,按钮的 Name 属性改成 cmdChoose,再把按钮上的显示文字改成「选择图片」。要是找不到属性面板,按 F4 就能调出来。

Excel VBA UserForm工具箱中添加Image控件作为图片预览区

第三步:写入选择图片代码

双击刚才做好的「选择图片」按钮,直接进入按钮的单击事件编辑页面,把下面这段代码粘进去就好。这段代码默认只筛选常用的图片格式,选完文件后会先判断路径有没有效,再自动把图片加载到 imgPreview.Picture 里。

Private Sub cmdChoose_Click()
    Dim picPath As Variant

    picPath = Application.GetOpenFilename( _
        FileFilter:="图片文件 (*.jpg;*.jpeg;*.png;*.bmp),*.jpg;*.jpeg;*.png;*.bmp", _
        Title:="请选择要预览的图片")

    If picPath = False Then Exit Sub

    Me.imgPreview.PictureSizeMode = fmPictureSizeModeZoom
    Me.imgPreview.Picture = LoadPicture(CStr(picPath))
End Sub

Excel VBA UserForm右键查看代码进入按钮事件代码窗口

第四步:添加运行入口

回到VBA编辑器左边的工程面板,右键点当前工作簿,插入一个普通模块,写一段用来弹出窗体的启动代码就行。代码特别短,只要你的窗体还是默认名 UserForm1,运行 ShowPreviewForm 这个过程就能直接调出预览窗体。

Sub ShowPreviewForm()
    UserForm1.Show
End Sub

Excel工作表中运行VBA后弹出UserForm图片预览窗体

第五步:选择图片并检查预览效果

运行 ShowPreviewForm,点窗体上的「选择图片」,挑一张本地存的图片选好,预览区就会自动按原图比例显示。要是图片被拉伸变形了,先检查下Image控件的 PictureSizeMode 有没有设成 fmPictureSizeModeZoom;要是选完图弹出路径报错,先确认图片文件没被挪到别的文件夹,也没有系统权限限制。

Skywork Excel
Skywork Excel

Skywork Excel(skywork)——用于任何涉及Excel、电子表格、表格、数据分析或文件转换的任务。内置网页搜索,实时获取信息。

下载

Excel UserForm窗体中Image控件显示选中的图片预览效果

LoadPicture 函数和选图语法说明

LoadPicture 是VBA里专门用来加载图片的函数,最常用的写法是 LoadPicture(pathname),返回的图片对象可以直接赋值给窗体、Image控件或者其他支持显示图片的对象。这里的 pathname 是图片的完整存储路径,一般用字符串格式传进去;要是路径为空、文件不存在或者格式不支持,运行的时候就会弹出「无效的图片」这类运行错误。

项目 写法或含义
语法 LoadPicture([pathname])
pathname 可选参数;图片文件完整路径,常见为 jpg、jpeg、png、bmp
返回值 Picture 对象,可赋给 Image.Picture
清空图片 Set Me.imgPreview.Picture = Nothing

Application.GetOpenFilename 是Excel自带的、用来调出系统选文件窗口的方法,常用语法是 Application.GetOpenFilename(FileFilter, FilterIndex, Title)。这个例子里只用到 FileFilterTitle 两个参数,它的返回值要么是你选中的文件完整路径,要么是点取消时返回的 False,所以接收返回值的变量用 Variant 类型兼容性更好,不容易出类型不匹配的问题。

参数 作用 本例写法
FileFilter 限制可选文件的类型 图片文件 (*.jpg;*.jpeg;*.png;*.bmp),*.jpg;*.jpeg;*.png;*.bmp
FilterIndex 默认选中第几个筛选条件 省略
Title 文件选择窗口的显示标题 请选择要预览的图片

要是想让窗体一打开就自动显示一张预设的默认图,直接在 UserForm_Initialize 窗体初始化事件里加两行代码就好:

Private Sub UserForm_Initialize()
    Me.imgPreview.PictureSizeMode = fmPictureSizeModeZoom
    Me.imgPreview.Picture = LoadPicture(ThisWorkbook.Path & "\sample.jpg")
End Sub

这里用到的 sample.jpg 得和你这个xlsm文件放在同一个文件夹里,你把文件发给别人的时候,这张默认图也要一起打包发过去,不然对方打开的时候找不到路径,默认图就显示不出来啦。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

excel excel表格

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

2023.07.25

4341

7

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2596

5

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

2023.08.02

2400

3

excel表格斜线一分为二
excel表格斜线一分为二

在Excel表格中,我们可以使用斜线将单元格一分为二。本专题为大家带来excel表格斜线一分为二怎么弄的相关文章,希望可以帮到大家。

2023.08.02

1424

3

excel斜线表头一分为二
excel斜线表头一分为二

excel斜线表头一分为二的方法有使用合并单元格功能方法、使用文本框功能方法、使用自定义格式方法。本专题为大家提供excel斜线表头一分为二相关的各种文章、以及下载和课程。

2023.08.02

657

5

绝对引用的输入方法
绝对引用的输入方法

绝对引用允许在公式中引用一个固定的单元格,而不会随着公式的复制和粘贴而改变引用的单元格。本专题为大家提供绝对引用相关内容的文章,大家可以免费体验。

2023.08.09

5108

7

java导出excel
java导出excel

在Java中,我们可以使用Apache POI库来导出Excel文件。本专题提供java导出excel的相关文章,大家可以免费体验。

2023.08.18

5603

6

excel输入值非法
excel输入值非法

在Excel中,当输入的数值非法时,有以下多种处理方法。本专题为大家提供excel输入值非法的相关文章,大家可以免费体验。

2023.08.18

1541

3

excel生成二维码
excel生成二维码

虽然Excel本身并不直接支持生成二维码,但我们可以借助一些插件或宏来实现在Excel中生成二维码的功能。本专题为大家提供excel生成二维码的相关文章。

2023.08.18

2278

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 42.9万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 3.4万人学习