单元格 图片导出excel_利用VBA下载钉钉系统导出Excel数据中的图片

本文介绍如何使用VBA从钉钉导出的Excel数据中批量下载图片。通过输入图片链接所在的列号和开始下载的行数,VBA脚本将自动创建船舶名称目录,并以单元格标题为文件名保存图片。

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

钉钉是个非常不错的工具,在我们日常使用中经常要上传一些图片,有的是为了打卡,有的为了审批流程,实际使用中都有照片的上传,但是将有照片的数据导出时,其在Excel中是显示该图片的一个链接,如果上传的是多张照片则是一组照片链接,如果我们想保存其中的照片或者是查看,会很不方便。如图所示:

a362714d9eb7f030e5f6acb1c9341f34.png

钉钉中下载的示例数据

今天我就结合Excel中导出的数据,结合VBA,将钉钉中导出的数据中的图片全部下载到本地。具体代码如下:

Sub 下载钉钉导出数据中的图片()Dim i As IntegerDim sFileName, sUrl As StringDim arr() As StringDim arrCol() As StringOn Error Resume NextDim sKey, sDownS, sDown As StringDim iLine As IntegersKey = InputBox("请输入需要建目录的关键列号(请输入列号的字母)")sDownS = InputBox("请输入需要下载图片的列号(输入多个要下载的列号的字母,如果多列请用半角分号分隔开)")iLine = Int(InputBox("请输入您指定开始下载的行号(只能输入数字)"))If iLine <= 2 Then iLine = 2Dim PathSht As StringWith Application.FileDialog(msoFileDialogFolderPicker)  If .Show Then PathSht = .SelectedItems(1) Else Exit Sub '如果没有选择路径则退出End WithPathSht = PathSht & ""For i = iLine To Range("A" & Rows.Count).End(xlUp).Row    MkDir (PathSht & Range(sKey & i)) '建立一个文件夹    Dim m As Integer    arrCol = Split(sDownS, ";") '判断是不是有多列需要下载    For m = 0 To UBound(arrCol)        sDown = arrCol(m)        Dim j As Integer        arr = Split(Range(sDown & i), Chr(10)) '钉钉中特有的,如果有多张图片,钉钉中会使用分割符分割        Dim jj As Integer        jj = 0        For j = 0 To UBound(arr)            If arr(j) <> "" Then                jj = jj + 1                sFileName = PathSht & Range(sKey & i) & "" & Range(sDown & 1) & jj & ".jpg" '将所在列标题作为文件名                sUrl = arr(j)                If sUrl <> "" Then Call HttpDownNetFile(sFileName, sUrl) '如果内容不为空,则开始下载照片            End If        Next    NextNextMsgBox "全部下载完成"End Sub
Sub HttpDownNetFile(ByVal sFileName As String, ByVal sUrl As String)On Error Resume NextIf sFileName = "" Then Exit SubIf sUrl = "" Then Exit SubDim XmlHttp As ObjectDim ayrHttpBody() As ByteSet XmlHttp = CreateObject("Microsoft.XMLHTTP")XmlHttp.Open "GET", sUrl, TrueXmlHttp.sendDo Until XmlHttp.readyState = 4    DoEventsLoopIf XmlHttp.Status = 200 Then    ayrHttpBody() = XmlHttp.responseBody    Open sFileName For Binary As #1    Put #1, , ayrHttpBody()    Close #1    Set XmlHttp = NothingEnd IfEnd Sub

在Excel中VBA环境下调用该代码,分别弹出三个对话框,其功能分别如下:

a9e998d23bf346f64baadab35e20b98a.png

如示例中的,我想安装船舶名称建立目录,只需要输入该列的列号,如示例中的“D”,需要注意的是一定是在英文输入法下输入哦,且不区分大小写。

83301d0c802135d2e604e42df8799dae.png

输入有图片链接的列号

在示例数据中,比如我想下载E列的设备编号照片,F列的卡号照片,如果您的数据中有多列可以依次使用半角分号区分开来,需要注意的是一定是在英文输入法下输入哦。

8199038e7bf02cebe31077403e601846.png

选择您要从哪一行数据开始下载

此处只能填写数字,默认的将从第2行开始下载,如果数字小于2也从第二行开始下载,第2行就是Excel数据中的第2行数据(第1行为标题),对于多次下载且数据比较多的避免重复下载,,最后选择您要下载保存的目录即可,然后就静静的等待下载完成,下载完成如下图所示:

5e6f419c7a6a2432092c6cebb88b99b4.png

下载完成后的目录

0cf1baf465e220513eed43348314f9a2.png

每个目录下已经下载成功的图片

已经下载成功的文件将使用Excel所在列的标题作为文件名的,如果有多个文件,其自动增加序号。

是不是可以将你需要的所有的图片一次性全部下载成功,且按照你需要的建立文件夹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值