Excel将单元格内的url批量转化为图片格式的三种方法

一、打开开发工具选项卡调用VB编程功能

13946199-c8e248b710c57580.png
文件——选项
13946199-46360f4ec4e0eec5.png
勾选开发工具
13946199-fdbd58caeee10f6a.png
i将excel另存为能启用宏的xlsm格式

二、将url转化为图片的三种方法

1、同时保留图片和连接(编写vb程序并调用对应的宏)

首先先把所有链接转化为超链接形式(蓝色字体带下划线)

13946199-3f6f3fe12e4db27d.png
有个别链接为黑体格式

开发工具——Visual Basic(或者ALT+F11快捷键)进入VB界面,然后双击sheet1按钮打开VB编程窗口


13946199-ac1ab1bf32ccda2f.png
VB编程窗口

输入以下代码并保存

Sub loadimage()
Dim HLK As Hyperlink, Rng As Range
For Each HLK In ActiveSheet.Hyperlinks  '循环活动工作表中的各个超链接
    If HLK.Address Like "*.jpg" Or HLK.Address Like "*.gif" Then  '如果链接的位置是jpg或gif图片(此处仅针对此两种图片类型,更多类型可以通过建立数组或字典或正则来判断)
        Set Rng = HLK.Parent.Offset(, 1)  '设定插入目标图片的位置
        With ActiveSheet.Pictures.Insert(HLK.Address)  '插入链接地址中的图片
            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
    End If
Next
End Sub
13946199-ca4defbbadaf59b6.png
输入vb代码

开发工具-宏-执行


13946199-65ef95d1feab1db5.png
执行宏后显示图片
2、删除链接只保留图片(插入VB脚本方式)

新建记事本保存以下代码另存为.bas格式

'charset GB2312 . Excel 中的图片链接转为图片文件

Attribute VB_Name = "LoadImage"
Sub LoadImage()
Dim HLK As Hyperlink, Rng As Range
For Each HLK In ActiveSheet.Hyperlinks  '循环活动工作表中的各个超链接
    If UCase(HLK.Address) Like "*.JPG" Or UCase(HLK.Address) Like "*.JPEG" Or UCase(HLK.Address) Like "*.PNG" Or UCase(HLK.Address) Like "*.GIF" Then  '如果链接的位置是jpg或gif图片(此处仅针对此两种图片类型,更多类型可以通过建立数组或字典或正则来判断)
        Set Rng = HLK.Parent.Offset(, 0)  '设定插入目标图片的位置
        With ActiveSheet.Pictures.Insert(HLK.Address)  '插入链接地址中的图片
            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
        HLK.Parent.Value = ""   '删除单元格的图片链接
    End If
Next
End Sub

在VB界面右键sheet页选择导入文件


13946199-b19c616a7e0a35a6.png
右键sheet选择导入文件

13946199-9e8d18496eda4a4e.png
导入文件后出现模块

开发工具-宏-执行LoadImage模块


13946199-f0e9c5a4b69f003c.png
执行LoadImage宏

13946199-f54438ce5e9a60e7.png
执行后的结果
3、主动选择是否打开图片

同方法1,但是需要选择声明为BeforeRightClick,设置为右键时触发


13946199-3dd984912655d538.png
右键点击触发宏

在对应的时间方法中插入如下代码

With Target
        If Left(.Value, 7) = "http://" Then '如果单元格内容为网址
            '添加网络图片,并设置为图片大小位置随单元格变化而变化
            ActiveSheet.Shapes.AddPicture(.Value, msoCTrue, msoCTrue, .Left, .Top, .Width, .Height).Placement = xlMoveAndSize
            .WrapText = True '单元格设置为自动换行,以隐藏网址
        End If
End With

右键单元格就可以显示图片

补充

解决评论区的将非超链接的网址显示成图片的问题

Sub loadimage()
Dim ranTotal As Range, rng As Range, imageRng As Range '设定三个Range变量
Set rngTotal = Range("o:o")  '选中存放网址的o列
For Each rng In rngTotal     '遍历所有的o列单元格
    If Left(rng.Value, 7) = "http://" Then '如果单元格内容为网址
        Set imageRng = rng.Offset(, 1)  '存放图片的地址
        With ActiveSheet.Pictures.Insert(rng.Value)
            If .Height / .Width > imageRng.Height / imageRng.Width Then  '判断图片纵横比与单元格纵横比的比值以确定针对单元格缩放的比例
                .Top = imageRng.Top
                .Left = imageRng.Left + (imageRng.Width - .Width * imageRng.Height / .Height) / 2
                .Width = .Width * imageRng.Height / .Height
                .Height = imageRng.Height
            Else
                .Left = imageRng.Left
                .Top = imageRng.Top + (imageRng.Height - .Height * imageRng.Width / .Width) / 2
                .Height = .Height * imageRng.Width / .Width
                .Width = imageRng.Width
            End If
        End With
    End If
Next
End Sub
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值