首页 > 其他分享 >excel宏-表格通过图片的网络路径下载展示图片

excel宏-表格通过图片的网络路径下载展示图片

时间:2024-01-19 15:23:48浏览次数:23  
标签:objHTTP Dim Set End 表格 excel cell oStream 图片

1、原理

通过图片的网络路径,将图片下载到本地,excel读取本地路径,显示图片。

注意:下载的图片路径改变将无法展示

2、准备

2.1、excel版本

MS_Office_2016

2.2、excel开启宏

选项 -》信任中心 -》 信任中心设置 -》 宏设置 -》启用所有宏

2.3、另存为宏文件

表格数据

另存为宏文件

3、宏编程

  • 打开宏文件

  • Alt + F11 : 打开宏编辑器,新建模块,复制以下代码

Sub DownloadAndShowImages()
    Dim ws As Worksheet
    Dim cell As Range
    Dim pic As Picture

    ' 修改为你的图片链接所在的工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
        
    For Each cell In ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
        ' 下载图片到本地缓存,使用第一列的内容作为文件名
        Dim fileName As String
        fileName = "C:\Temp\" & cell.Offset(0, -2).Value & ".jpg"
        DownloadImage cell.Value, fileName

        ' 在工作表中插入图片
        Set pic = ws.Pictures.Insert(fileName)

        ' 调整图片大小和位置,根据需要修改
        pic.Top = cell.Top
        pic.Left = cell.Offset(0, 1).Left
        pic.Width = 100 ' 修改为适当的宽度
        pic.Height = 100 ' 修改为适当的高度
    Next cell
End Sub

Sub DownloadImage(url As String, savePath As String)
    Dim objXML As Object
    Dim objHTTP As Object
    Dim oStream As Object

    ' 创建文件夹(如果不存在)
    If Dir("C:\Temp\", vbDirectory) = "" Then
        MkDir "C:\Temp\"
    End If

    Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

    objXML.Open "GET", url, False
    objXML.send ""

    If objXML.Status = 200 Then
        Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
        objHTTP.Open "GET", url, False
        objHTTP.send ""
        If objHTTP.Status = 200 Then
            Set oStream = CreateObject("ADODB.Stream")
            oStream.Open
            oStream.Type = 1
            oStream.Write objHTTP.responseBody
            oStream.SaveToFile savePath, 2 ' 1: 不覆盖, 2: 覆盖
            oStream.Close
        End If
    End If

    Set objXML = Nothing
    Set objHTTP = Nothing
    Set oStream = Nothing
End Sub
  • 保存关闭,Alt + F8, 选择宏执行

  • 结果下载图片,展示图片

标签:objHTTP,Dim,Set,End,表格,excel,cell,oStream,图片
From: https://www.cnblogs.com/pine007/p/17974672

相关文章

  • c4d阿诺德怎么渲染高清图片
    c4d作为也可热门建模工具,该渲染器支持多种渲染器使用,很多人在选择阿诺德渲染器是出现了高清图片无法渲染的问题,阿诺德可提供逼真的光影效果和物理材质,那么怎么利永阿诺德渲染高清的图片呢,一起来简单看看吧。c4d阿诺德怎么渲染高清图片1、调整输出设置:在渲染设置中找到"输出"(O......
  • SpringSecurity-图片验证码
    图片验证码生成Core模块封装验证码类publicclassImageCode{    privateBufferedImageimage;    /**     *code是一个随机数,图片是根据随机数生成的,     *存放到session里面,后面用户提交登录请求时候要去验证的     */    private......
  • rosbag 包提取图片和点云数据
    环境Ubuntu20.04ROSnoeticPython3.8.10⚠️注意:Python版本很重要,建议用3.8.10版本,如果使用更新的版本,会导致程序需要的库版本不对应,会报错。建议使用conda创建一个虚拟环境最佳,创建指令:condacreate-nros_envpython=3.8.10。安装所需的包在创建的Python3.8.......
  • fastapi接收图片文件
    #api接口,主函数importbase64importioimportcv2importosimporttimefromPILimportImageimportnumpyasnpfromfastapiimportFastAPI,HTTPExceptionimportuvicornapp=FastAPI()##############################################@app.post("/upload......
  • Python将JSON以表格数据格式导出
      本文介绍基于Python语言,读取JSON格式的数据,提取其中的指定内容,并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中的方法。  JSON格式的数据在数据信息交换过程中经常使用,但是相对而言并不直观;因此,有时我们希望将JSON格式的数据转换为Excel表格文件数据;这里就介绍一下......
  • C#使用npoi生成excel流
    usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Dynamic;usingSystem.IO;usingSystem.Linq;namespaceTools{publicstaticclassExcelHelper{publicstaticStreamToExcel(objecta,IDictionary<string,object>cs=d......
  • P1829 [国家集训队] Crash的数字表格 / JZPTAB
    \[\sum\limits_{i=1}^N\sum\limits_{j=1}^M\frac{ij}{\gcd(i,j)}\]\[\sum\limits_{d=1}^N\frac1d\sum\limits_{i=1}^N\sum\limits_{j=1}^Mij[\gcd(i,j)=d]\]\[\sum\limits_{d=1}^Nd\sum\limits_{i=1}^{\lfloor\fracNd\rfloor}\sum\limits_......
  • 上传图片,必填增加校验
    <el-form-itemlabel="产品照片:"class="product-manual-box":prop="`infoTabs[${index}].productfmId`":rules="{required:true,message:'请上传产品照片',trigger:'change'}">......
  • 根据后端id去请求拿取图片组件
    1.组件<template><img :src="srcImg?srcImg:defaultImage?getDefaultImage:''" v-bind="{...otheAttribute}" alt=""/></template><script>import{getFileInfoApi}from'@/a......
  • Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.to_excel之前把这一列转换成字符串,或者你在Excel上设置......