你肯定也遇到过。不知道是哪个部门的同事,或者是哪个不靠谱的供应商,发来一个Excel表格,里面塞满了密密麻麻的产品图、活动照片、或者是各种截图。几百行,每行一张图。现在,你的老板或者甲方爸爸,轻描淡写地来一句:“把这些图片都给我导出来,我要放到PPT里”或者“整理一下,传到网站后台去”。
你怎么办?
是不是下意识就想到了那个最原始、最笨拙,也最考验耐心的操作:选中一张图片,右键,在菜单里颤抖地寻找“另存为图片(S)...”,然后选择一个文件夹,命名,保存。再选中下一张,重复这个过程。
如果只有三五张图,行,没问题,就当是活动一下手指关节了。但如果是三十张、五十张,甚至上百张呢?我敢打赌,不用等到第二十张,你的眼神就开始涣散,鼠标指针开始漂移,内心充满了对那个制作表格的人的“亲切问候”。那种机械、重复的劳动,简直是对人类创造力的无情践踏。
别这样折磨自己。真的。今天我就跟你掏心窝子聊聊,怎么把这件事变得,不说享受吧,至少是高效、利落,甚至……带点那么一丝丝的极客范儿。
拆“盲盒”大法:简单粗暴,直击灵魂
这招是我最喜欢用的,因为它足够颠覆,足够简单,效果又立竿见影。不需要你懂什么函数,更不需要你会什么代码,只需要你胆大心细。
核心就两个字:改后缀。
对,你没听错。我们平时看到的那个.xlsx或者.xls文件,你别看它表面上是个表格,其实它的内里,说白了,就是一个被特殊打包过的压缩文件。像不像一个精心包装的礼物盒子?我们现在要做的,就是把这个包装给它拆了。
具体操作步骤是这样的,看仔细了:
-
备份!备份!备份! 重要的事情说三遍。把那个要处理的Excel文件,复制一份。千万不要在原文件上直接操作,万一翻车了,你哭都没地方哭去。这是行走江湖的第一铁律。
-
找到你复制出来的那个文件,确保你的电脑设置是“显示文件扩展名”的。如果看不到
.xlsx这样的后缀,就去文件夹选项里把它打开。 -
选中文件,按
F2重命名,或者右键选择“重命名”。关键的一步来了:把文件的后缀名.xlsx直接改成.zip。是的,你把它变成了一个标准的压缩文件。 -
系统会弹出一个警告,说什么“文件可能无法使用”,别理它,勇敢地点“是”。
-
现在,你看看,那个Excel文件的图标是不是变成了一个压缩包的图标?奇迹即将发生。
-
双击打开这个
.zip文件。你会看到里面有好几个文件夹。别慌,我们的目标很明确,找到那个叫xl的文件夹,点进去。 -
在
xl文件夹里,你会看到一个叫media的文件夹。恭喜你,你已经找到了宝藏!这个media文件夹里,就静静地躺着你那个Excel文件里嵌入的所有图片、图表、甚至各种小图标。一张不多,一张不少,全都是原始尺寸,高清无码。
是不是瞬间觉得打开了新世界的大门?
你现在要做的,就是把media文件夹里所有的图片文件,全部选中,解压到你想要的任何地方。整个过程,可能也就十几秒钟。比起你一张一张右键另存为,效率何止提升了百倍?这感觉,就像是用惯了手动挡,突然换上了特斯拉,一脚电门,世界都安静了。
这个方法的优点是通用性极强,几乎对所有.xlsx格式的文件都有效,而且能批量提取所有图片,原汁原味。缺点嘛,就是每次都得改后缀,操作完如果还想用那个Excel,最好再把后缀改回.xlsx。但说实话,为了这惊人的效率,这点小麻烦算什么。
VBA宏:屠龙宝刀,一劳永逸
如果说改后缀是机智的奇袭,那VBA就是正面战场的重型武器。
可能一听到“VBA”或者“代码”,有些人就开始头疼了。别怕,代码这东西,你不一定要会写,但你得学会“抄”。互联网时代,最不缺的就是大神们分享的现成代码。这就像你不需要会造车,但得会开车一样。
用VBA来批量提取图片,最大的好处就是精准控制和自动化。比如,你可以指定只提取某个工作表里的图片,甚至可以按照图片在单元格的位置,给提取出来的图片自动命名。这就非常高级了。
下面我分享一段我珍藏多年的VBA代码,亲测好用。你直接拿去用就行。
操作步骤:
-
还是那句话,先备份你的Excel文件。
-
打开那个需要提取图片的Excel文件。
-
按下快捷键
Alt + F11,这会打开一个叫“Microsoft Visual Basic for Applications”的窗口,也就是VBA编辑器。别被它复杂的界面吓到。 -
在窗口的左侧,找到你的文件名,右键点击,选择“插入” -> “模块”。这时,右侧会出现一个空白的编辑区,就像一张白纸。
-
把下面的代码,完整地复制粘贴到这个空白区域里:
```vb Sub ExportImages() Dim shp As Shape Dim fso As Object Dim fldPath As String Dim ws As Worksheet
' 创建一个文件夹用于存放图片 fldPath = ThisWorkbook.Path & "\导出图片" Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(fldPath) Then fso.CreateFolder fldPath End If ' 遍历当前工作簿中的所有工作表 For Each ws In ThisWorkbook.Worksheets ' 遍历工作表中的所有形状(图片也是一种形状) For Each shp In ws.Shapes ' 判断形状是否为图片 If shp.Type = msoPicture Or shp.Type = msoLinkedPicture Then ' 复制图片 shp.CopyPicture ' 创建一个临时的图表对象来粘贴图片 Dim chtObj As ChartObject Set chtObj = ws.ChartObjects.Add(0, 0, shp.Width, shp.Height) chtObj.Activate ' 粘贴并导出图片 With chtObj.Chart .Paste .Export Filename:=fldPath & "\" & ws.Name & "_" & shp.Name & ".png", FilterName:="PNG" End With ' 删除临时的图表对象 chtObj.Delete End If Next shp Next ws MsgBox "所有图片已成功导出到“导出图片”文件夹!"End Sub ```
-
代码粘贴进去之后,直接按键盘上的
F5键,或者点击工具栏里的那个绿色的“运行”小三角。 -
稍等片刻,它会自动运行。当弹出一个提示框,告诉你“所有图片已成功导出到‘导出图片’文件夹!”的时候,就大功告成了。
现在,回到你Excel文件所在的文件夹看看,是不是多了一个叫“导出图片”的文件夹?点进去,所有的图片是不是都按照“工作表名_图片名.png”的格式,整整齐齐地躺在那里了?
这个方法,一旦你配置好了,以后再遇到类似的需求,打开文件,Alt+F11,F5,三秒搞定。这效率,这专业度,绝对能让旁边的同事对你刮目相看。
当然,除了上面这两个“王炸”级别的方法,还有一些曲线救国的旁门左道。
比如,你可以把Excel里的内容全选,复制,然后粘贴到Word或者PPT里。粘贴过去之后,再把这个Word或PPT文件另存为“网页(*.htm;*.html)”格式。保存后,你会得到一个.htm文件和一个同名的文件夹,那个文件夹里,也包含了所有的图片。这个方法有时候也挺好用,但感觉总是不如前两种来得直接和纯粹。
所以,你看,面对Excel提取图片这个看似棘手的问题,我们手里的武器其实很多。
千万别再去做那个埋头一张一张右键另存为的“老实人”了。工具是死的,人是活的。选择一个最适合你当前场景的方法,无论是简单粗暴的改后缀大法,还是一劳永逸的VBA宏,都能让你从繁琐的重复劳动中解脱出来,把时间和精力,用在真正需要创造力的地方。
这,才是我们和工具之间,最酷的关系。
【说到Excel怎么提取图片,我脑子里立马就浮现出那种让人头皮发麻的场景。】相关文章:
excel文件怎么打印12-06
excel批注怎么删除12-06
excel怎么怎么扩大表格12-06
excel时间怎么排序12-06
excel怎么修改颜色12-06
说到Excel怎么提取图片,我脑子里立马就浮现出那种让人头皮发麻的场景。12-06
怎么打印excel文件12-06
excel怎么去掉符号12-06
excel怎么输入分号12-06
excel甘特图怎么画12-06
我跟你讲,聊到Excel,区域合并这个东西,简直就是个披着天使外衣的魔鬼。12-06
Excel怎么分散对齐12-06