vba下载(vba下载图片)

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

vba下载(vba下载图片)

钉钉中下载的示例数据

今天我就结合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环境下调用该代码,分别弹出三个对话框,其功能分别如下:

vba下载(vba下载图片)

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

vba下载(vba下载图片)

输入有图片链接的列号

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

vba下载(vba下载图片)

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

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

vba下载(vba下载图片)

下载完成后的目录

vba下载(vba下载图片)

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

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

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

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。