EXCEL VBA批量下载URL链接地址图片、URL链接地址图片转为图片

介绍如何使用VBA脚本在Excel中批量将图片链接(URL)转换为实际图片,并自动调整图片尺寸以匹配单元格大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在EXCEL里,需要大量引用网上链接图片,例如python的爬虫把图片链接爬取之后,需要在EXCEL内展示图片,可以使用VBA批量将URL链接地址图片转为图片;

1.复制以下代码到VBA内,(不知道VBA是什么的传送门:https://blog.youkuaiyun.com/weixin_39416561/article/details/82428684

Sub 链接转图片()

For Each Rng In Selection  '循环活动工作表中的各个超链接
    If UCase(Rng.Value) Like "*.JPG" Or UCase(Rng.Value) Like "*.JPEG" Or UCase(Rng.Value) Like "*.PNG" Or UCase(Rng.Value) Like "*.GIF" Then  '如果链接的位置是jpg或gif图片(此处仅针对此两种图片类型,更多类型可以通过建立数组或字典或正则来判断)
        'Set Rng = HLK.Parent.Offset(, 0)  '设定插入目标图片的位置
        With ActiveSheet.Pictures.Insert(Rng.Value)  '插入链接地址中的图片
            If .Height / .Width > Rng.Height / Rng.Width Then  '判断图片纵横比与单元格纵横比的比值以确定针对单元格缩放的比例
                .Top = Rng.Top
                .Left = Rng.Left + (Rng.Width - .Width * Rng.Height / .Height) / 2
                .Width = .Width * Rng.Height / .Height
                .Height = Rng.Height
            Else
                .Left = Rng.Left
                .Top = Rng.Top + (Rng.Height - .Height * Rng.Width / .Width) / 2
                .Height = .Height * Rng.Width / .Width
                .Width = Rng.Width
            End If
        End With
        Rng.Value = ""   '删除单元格的图片链接
    End If
Next
End Sub

2.选中URL单元格,运行VBA即可;

代码会自动根据单元格大小调整图片大小及位置,结果如下:

以前用Excel2003做了些宏,在网上还有不少粉丝,因一些功能在Excel2010中无法使用,故重新整理,欢迎指正; 本Excel中的宏在Excel2010中测试表现出色; 运行宏前,要保证EXCEL没有禁用宏。 Michael Ho QQ: 9900060 ----------------------- 本Excel有以下功能: 插入图片1 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.宏会自动复制Sheet2到新工作簿,并插入你所选文件夹中的全部JPG图片到B列,对应的图片名自动填到C列; 3.图片的大小会自动适应Sheet2的B3单元格,因此可以在点击执行前调整Sheet2的B3单元格的大小来控制插入图片的大小。 -------- 插入图片2 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.宏会自动复制Sheet3到新工作簿,并插入你所选文件夹中的全部JPG图片制作图册,对应的图片名自动填到图片下方; -------- 插入图片3 如果用户自己的Excel文件中有一列是型号,该宏可以插入指定文件夹里以型号命名的JPG图片到另一列; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+I (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏InsertPic3); 4.然后会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 5.在弹出的对话框中指定型号在第几列,图片要插入到第几列,以及从哪一行开始; 6.图片的大小会自动适应你设定的第一行要插入图片的单元格,因此提前调整那个单元格的大小可以控制插入图片的大小。 ------------- 删除活动工作表中所有图片 Ctrl+d 删除活动工作表里所有的JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+d (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏DelPic); ------------- 导出活动工作表中被选中的一张JPG图片 Ctrl+e 导出活动工作表中被选中的一张JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.请选中一张要导出的图片; 4.在你的文件中按Ctrl+e (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏OutputOnePic); 5.在弹出的对话框中指定图片要保存的名字; 1.不管图片Excel中是否被缩放过,导出的图片是按图片的原始尺寸进行保存。 2.在桌面上会自动新建一个"OutputPic"的文件夹,导出的图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ------------- 导出活动工作表中所有JPG图片 Ctrl+f 导出活动工作表中所有JPG图片,并且图片名自动使用指定列中的图片名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+f (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏OutputAllPic); 4.在弹出的对话框中指定图片所在列,图片名所在的列; 1.不管图片Excel中是否被缩放过,导出的图片是按图片的原始尺寸进行保存; 2.在桌面上会自动新建一个"OutputPic"的文件夹,所有导出的图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ---------------- 对指定文件夹中的JPG图片进行重命名 Ctrl+r 利用活动工作表中的所有图片的旧名与新名的对照,对指定文件夹中JPG图片进行重命名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+r (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏RenamePic); 4.在弹出的对话框中指定图片旧名所在列和图片新名所在的列; 1.可以结合插入图片的宏,将所有图片的旧名输入到Excel中,再在另一列中填上新图片名,然后使用该宏。 2.如果顺利运行,会在原来那个文件夹下面新建一个叫“New”的子文件夹,所有重命好名的图片会自动放入子文件夹里; 3.如果文件夹中已有相同名字的文件,则后面的文件会覆盖原来的文件。
<think>好的,我现在需要解决用户的问题:如何在WPS中批量将HTML链接转换为嵌入单元格中的图片。用户之前提到了使用“E灵”工具在Excel中插入图片到批注,但这次他们使用的是WPS,并且希望将HTML链接直接转为嵌入单元格的图片,而不是批注。需要找到适合WPS的方法,可能涉及宏或插件。 首先,我需要确认WPS是否有内置功能可以实现这个需求。根据经验,WPS的常规功能可能不支持直接通过HTML链接导入图片到单元格,但可以通过一些变通方法。比如,用户可能需要先将图片下载到本地,再批量插入。但用户明确提到的是转换HTML链接,可能希望直接从网络URL插入图片,而无需手动下载。 接下来,检查是否有类似“E灵”的第三方插件支持WPS。WPS的插件生态不如Excel丰富,但仍有部分工具可用。例如,WPS官方应用市场可能有相关插件。但用户可能需要更直接的解决方案,比如使用宏或VBA代码。不过,WPS的VBA支持有限,可能需要使用JS宏,这是WPS较新的功能。 然后,考虑使用JS宏来实现自动化。步骤可能包括:遍历单元格中的HTML链接,使用网络请求下载图片,调整图片尺寸并嵌入到单元格。这需要处理HTTP请求和图片处理,可能存在跨域问题或安全性限制。此外,WPS的JS宏API是否支持这些操作需要查阅文档。 另外,考虑到用户可能不具备编程背景,提供详细的步骤和代码示例很重要。可能需要分步骤指导用户如何启用宏,编写脚本,并处理异常情况。同时,提醒用户注意网络连接的稳定性,以及图片链接的有效性。 最后,总结可能的解决方案:1. 使用WPS插件(如有);2. 使用JS宏编写脚本自动下载并插入图片;3. 手动下载图片批量插入。考虑到用户需求是批量转换,重点应放在自动化方法上,即JS宏的实现。需要验证该方法的可行性,并确保代码示例正确无误,适应用户的技术水平。</think>在WPS中批量将HTML链接转换为单元格内嵌入图片的实现方法可分为以下两种方案: ### 方案一:使用JS宏实现自动化(推荐) 1. **启用开发者模式** - 文件 > 开发工具 > 启用JS宏 - 新建宏模块并粘贴以下代码: ```javascript function ImportImagesFromURLs() { let sheet = Application.ActiveSheet; let range = sheet.Range("A1:A10"); // 修改为实际包含URL的区域 let imageWidth = 100; // 图片宽度(单位:像素) let imageHeight = 100; // 图片高度 for (let i = 1; i <= range.Rows.Count; i++) { let cell = range.Item(i); let url = cell.Text; if (url.startsWith("http")) { let image = sheet.Shapes.AddPicture(url, false, true, cell.Left, cell.Top, imageWidth, imageHeight ); image.Placement = 1; // 1表示与单元格一起移动 } } } ``` 2. **执行宏** - 按F5运行宏,程序将自动遍历指定区域内的URL - 注意:需确保链接可直接访问图片资源(如以.jpg/.png结尾的直链) ### 方案二:手动结合插件实现 1. **数据预处理** - 使用`=HYPERLINK()`公式生成可点击链接 - 通过「数据」>「分列」功能将文本转换为超链接 2. **使用「图片工具箱」插件** - 安装WPS官方应用市场的「图片工具箱」 - 选中目标区域 > 选择「网络图片导入」功能 - 设置图片尺寸参数后执行导入 ### 技术要点说明 1. 直接嵌入单元格需设置`Placement`属性为1,使图片与单元格绑定[^1] 2. JS宏支持的图片格式包括:PNG/JPG/BMP/GIF 3. 若遇到安全限制,需在「信任中心」启用网络访问权限
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值