提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
马上登记
x

or

如何将图像网址转换为Excel中的实际图像?

doc url to img 1

如果您在A列中有一个图像URL地址列表,现在,您想要从URL下载相应的图片,并将其显示在相邻的列B中,如左侧屏幕截图所示。 在Excel中,如何快速,轻松地从图像URL中提取实际图片?

使用VBA代码将图像网址转换为实际图像

使用Kutools for Excel将图像URL转换为实际图像


快速轻松地将图像URL转换为实际图像

Kutools for Excel's 从路径插入图片(URL) 功能可以帮助您从URL超链接或图像路径中提取所有真实图像。 点击下载Kutools for Excel!


使用VBA代码将图像网址转换为实际图像

以下VBA代码可以帮助您快速从图像URL地址中提取实际图像,请按照以下步骤操作:

1。 按住 ALT + F11 键以打开Microsoft Visual Basic for Applications窗口。

2。 点击 插页 > 模块,并将以下代码粘贴到模块窗口中。

VBA代码:将图片网址转换为实际图片:

Sub URLPictureInsert()
Dim Pshp As Shape
Dim xRg As Range
Dim xCol As Long
On Error Resume Next
Application.ScreenUpdating = False
Set Rng = ActiveSheet.Range("A2:A5")
For Each cell In Rng
filenam = cell
ActiveSheet.Pictures.Insert(filenam).Select
Set Pshp = Selection.ShapeRange.Item(1)
If Pshp Is Nothing Then GoTo lab
xCol = cell.Column + 1
Set xRg = Cells(cell.Row, xCol)
With Pshp
.LockAspectRatio = msoFalse
If .Width > xRg.Width Then .Width = xRg.Width * 2 / 3
If .Height > xRg.Height Then .Height = xRg.Height * 2 / 3
.Top = xRg.Top + (xRg.Height - .Height) / 2
.Left = xRg.Left + (xRg.Width - .Width) / 2
End With
lab:
Set Pshp = Nothing
Range("A2").Select
Next
Application.ScreenUpdating = True
End Sub

备注:

  • 1。 在上面的代码中, A2:A5 是包含要提取图像的URL地址的单元格范围,您应该根据需要更改单元格引用。
  • 2。 使用此代码,您无法根据需要指定提取的图像的大小。
  • 3。 以上代码只能将实际图像提取到URL列以外的单元格中,不能指定单元格输出图像。
  • 4。 您应该具有一些代码的基本知识,如果任何字符遗漏或不正确,代码将无法成功执行。

3。 然后按 F5 运行此代码的关键,所有相应的图片都已从图像URL一次性提取到相邻列,图像将被放置在特定单元格的中心,请参见屏幕截图:

doc url to img 2


使用Kutools for Excel将图像URL转换为实际图像

如果您不熟悉VBA代码或想要解决上述代码的限制, Kutools for Excel's 插入图片表单路径(URL) 功能可以帮助您根据计算机中的URL地址或特定路径快速插入cprresponding图像。

请注意:申请这个 插入图片表单路径(URL)首先,你应该下载 Kutools for Excel,然后快速轻松地应用该功能。

安装后 Kutools for Excel,请这样做:

1。 点击 Kutools > 插页 > 插入图片表单路径(URL),在弹出的对话框中,请设置以下操作,请参见截图:

doc url to img 3 doc url to img 4

2。 然后,点击 Ok 按钮,图片将从URL中提取,请参见截图:

doc url to img 1

点击下载并免费试用Kutools for Excel Now!


Kutools for Excel - 最佳办公生产力工具提高80%的生产力

  • 重用: 快速插入 复杂的公式,图表 以及你以前用过的任何东西; 加密单元格 密码; 创建邮件列表 并发送电子邮件...
  • 超级方程式酒吧 (轻松编辑多行文字和公式); 阅读布局 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不丢失数据; 分裂细胞含量; 组合重复的行/列...防止重复的细胞; 比较范围...
  • 选择复制或唯一 行; 选择空行 (所有细胞都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择......
  • 精确复制 多个单元格而不更改公式参考; 自动创建参考 多张表; 插入项目符号,复选框等等......
  • 提取文本,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级过滤器 (将过滤方案保存并应用到其他工作表); 高级排序 按月/周/日,频率等; 特殊过滤器 用粗体,斜体......
  • 结合工作簿和工作表; 根据键列合并表; 将数据拆分为多个表格; 批量转换xls,xlsx和PDF...
  • 超过300强大的功能。 支持Office / Excel 2007-2019和365。 支持所有语言。 在您的企业或组织中轻松部署。 全功能60天免费试用。
kte tab 201905

Office选项卡为Office提供选项卡式界面,使您的工作更轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
官方底部
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Ronnie · 4 months ago
    hey! with the Help of the Vba Code the Image has been extracted to the sheet but as i am moving my workbooks location the Image are Corrupted so help me here
  • To post as a guest, your comment is unpublished.
    karim · 6 months ago
    working perfect
    thanks a lot
  • To post as a guest, your comment is unpublished.
    Jo · 6 months ago
    if the url is in https, for sure there is no way to work around it?
  • To post as a guest, your comment is unpublished.
    Karthik Karthik · 7 months ago
    Hello I'm here asking for your help. My research ended up in 2 different macros that combined will give a good utility for my work.
    1. Will insert image as comment, 2. Will fetch Hyperlinks(Local folder path only, not web based URL) and paste them in destination cell
    I really tried to combine them to do one job, but I guess I don’t have enough knowledge on this.
    I need the images to be inserted as comment as the 1st code does to the destination range user selects.

    Sub InsertPictureAsComment()
    Dim PicturePath As String
    Dim CommentBox As Comment
    With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .title = "Select Comment Image"
    .ButtonName = "Insert Image"
    .Filters.clear
    .Filters.Add "Images", "*.png; *.jpg"
    .Show
    'Store Selected File Path
    On Error GoTo UserCancelled
    PicturePath = .SelectedItems(1)
    On Error GoTo 0
    End With
    'Clear Any Existing Comment
    Application.ActiveCell.ClearComments
    'Create a New Cell Comment
    Set CommentBox = Application.ActiveCell.AddComment
    'Remove Any Default Comment Text
    CommentBox.Text Text:=""
    'Insert The Image and Resize
    CommentBox.Shape.Fill.UserPicture (PicturePath)
    CommentBox.Shape.ScaleHeight 6, msoFalse, msoScaleFormTopLeft
    CommentBox.Shape.ScaleWidth 4.8, msoFalse, msoScaleFromTopLeft
    'Ensure Comment is Hidden (Swith to TRUE if you want visible)
    CommentBox.Visible = False
    Exit Sub
    'ERROR HANDLERS
    UserCancelled:
    MsgBox "Done"
    End Sub

    Sub URLToCellPictureInsert()
    'Updateby Extendoffice 20180608
    Dim Pshp As Shape
    Dim xRg As Range
    Dim xCol As Long
    On Error Resume Next
    Set Rng = Application.InputBox("Please select the url cells:", "KuTools for excel", Selection.Address, , , , , 8)
    If Rng Is Nothing Then Exit Sub
    Set xRg = Application.InputBox("Please select a cell to put the image as comment:", "KuTools for excel", , , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 1 To Rng.Count
    filenam = Rng(i)
    ActiveSheet.Pictures.Insert(filenam).Select
    Set Pshp = Selection.ShapeRange.Item(1)
    If Pshp Is Nothing Then GoTo lab
    xCol = cell.Column + 1
    Set xRg = xRg.Offset(i - 1, 0)
    With Pshp
    .LockAspectRatio = msoFalse
    .Width = 80
    .Height = 80
    .Top = xRg.Top + (xRg.Height - .Height) / 2
    .Left = xRg.Left + (xRg.Width - .Width) / 2
    End With
    lab:
    Set Pshp = Nothing
    Range("A2").Select
    Next
    Application.ScreenUpdating = True
    End Sub
    • To post as a guest, your comment is unpublished.
      Sharath · 3 months ago
      Before first End Sub Call the Module URLToCellPictureInsert and remove the msgbox Done paste before 2nd End sub

      Like this: Call URLToCellPictureInsert
  • To post as a guest, your comment is unpublished.
    Chile · 11 months ago
    Hello

    I try to get 33 images from URL but only gives me 1, all URL paths to the images are correct... what can that be?
  • To post as a guest, your comment is unpublished.
    Justyna · 1 years ago
    Hi,

    I have pictures with different resolutions. What should I write in height and width to keep the proportion of images?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, Justyna,
      May be there is no other good way to keep the proportion of images if the pictures with different resolutions.
      If you have the good solution, please comment here, thank you!
  • To post as a guest, your comment is unpublished.
    Ed · 1 years ago
    Hi all, This Macro is great. However, it does not really add pictures to the file but links that generate pictures each time I open the file. Thus I cannot compress pictures as they are not really inside the file. Could you please help me to really save pictures inside the file?
    • To post as a guest, your comment is unpublished.
      enrico rinero · 7 months ago
      Hi! I have the same question.
      There is a way to save the image effectively in the excel? (and not linked outside)
  • To post as a guest, your comment is unpublished.
    Shozib · 1 years ago
    Hi skyyang, first for such an informative post. I have a question, could you please help me. Using this code of your's I want to extract just one pic and want to place it in a specific cell. Is it possible??
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, Shozib,
      To put the images to any other cells as you want, please apply the following VBA code:

      Sub URLPictureInsert1()
      'Updateby Extendoffice 20180608
      Dim Pshp As Shape
      Dim xRg As Range
      Dim xCol As Long
      On Error Resume Next
      Set Rng = Application.InputBox("Please select the url cells:", "KuTools for excel", Selection.Address, , , , , 8)
      If Rng Is Nothing Then Exit Sub
      Set xRg = Application.InputBox("Please select a cell to put the image:", "KuTools for excel", , , , , , 8)
      If xRg Is Nothing Then Exit Sub
      Application.ScreenUpdating = False
      For I = 1 To Rng.Count
      filenam = Rng(I)
      ActiveSheet.Pictures.Insert(filenam).Select
      Set Pshp = Selection.ShapeRange.Item(1)
      If Pshp Is Nothing Then GoTo lab
      xCol = cell.Column + 1
      Set xRg = xRg.Offset(I - 1, 0)
      With Pshp
      .LockAspectRatio = msoFalse
      .Width = 80
      .Height = 80
      .Top = xRg.Top + (xRg.Height - .Height) / 2
      .Left = xRg.Left + (xRg.Width - .Width) / 2
      End With
      lab:
      Set Pshp = Nothing
      Range("A2").Select
      Next
      Application.ScreenUpdating = True
      End Sub

      Please try it, hope it can help you!
  • To post as a guest, your comment is unpublished.
    SamR · 1 years ago
    I'm using an Intel I5 processor, windows 7 professional 64bit, Office 2016 64 bit. I assume that the problem is a setting in Excel. Any help would be greatly appreciated.
    range is set, filenam = url and changes with each pass, Pshp is always nothing, URL's are verified, Any Ideas
  • To post as a guest, your comment is unpublished.
    Sam Ruppenthal · 1 years ago
    range is set, filenam = url and changes with each pass, Pshp is always nothing. Any Ideas
  • To post as a guest, your comment is unpublished.
    Zafar Khan · 1 years ago
    Thanks for your post. How I can get the pictures in the center of the cell. With the current codes the pictures are showing in the top left corner
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, Khan,
      the following VBA code can help you to extract the picture and put them into the center of the cells, please try it.

      Sub URLPictureInsert()
      Dim Pshp As Shape
      Dim xRg As Range
      Dim xCol As Long
      On Error Resume Next
      Application.ScreenUpdating = False
      Set Rng = ActiveSheet.Range("A2:A6")
      For Each cell In Rng
      filenam = cell
      ActiveSheet.Pictures.Insert(filenam).Select
      Set Pshp = Selection.ShapeRange.Item(1)
      If Pshp Is Nothing Then GoTo lab
      xCol = cell.Column + 1
      Set xRg = Cells(cell.Row, xCol)
      With Pshp
      .LockAspectRatio = msoFalse
      If .Width > xRg.Width Then .Width = xRg.Width * 2 / 3
      If .Height > xRg.Height Then .Height = xRg.Height * 2 / 3
      .Top = xRg.Top + (xRg.Height - .Height) / 2
      .Left = xRg.Left + (xRg.Width - .Width) / 2
      End With
      lab:
      Set Pshp = Nothing
      Range("A2").Select
      Next
      Application.ScreenUpdating = True
      End Sub
      • To post as a guest, your comment is unpublished.
        Vipin Sahu · 1 years ago
        Hello,
        I want to download the images from the URL's (Column A) in a specific folder and rename the same images with a code/number which is there in Column B.
        • To post as a guest, your comment is unpublished.
          skyyang · 1 years ago
          Hello, Vipin,
          To save the URL'S images into a folder and rename them with the new names in Column B, may be the following VBA code can help you:

          Note: Column A contains the URL addresses and Column B has the new names.

          #If VBA7 Then
          Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
          #Else
          Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
          #End If
          Sub URLPictureInsert()
          Dim I As Integer
          Dim xStr As String
          Dim xFd As FileDialog
          Dim xArr, xFdItem As Variant
          Application.ScreenUpdating = False
          Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
          If xFd.Show = -1 Then
          xFdItem = xFd.SelectedItems.Item(1)
          xArr = Range("A2:B5").Value
          For I = 1 To UBound(xArr)
          If xArr(I, 1) <> "" Then
          xStr = Mid(xArr(I, 1), InStrRev(xArr(I, 1), "."), Len(xArr(I, 1)))
          URLDownloadToFile 0, xArr(I, 1), xFdItem & "\" & xArr(I, 2) & I & xStr, 0, 0
          End If
          Next
          End If
          Application.ScreenUpdating = True
          End Sub

          Please try it, hope this can help you!
          • To post as a guest, your comment is unpublished.
            David · 8 months ago
            the renaming part on column B uploads into the folder but is adding a number count next to the name of the picture, how I can omit that?

            Thank you
            • To post as a guest, your comment is unpublished.
              skyyang · 8 months ago
              Hi, David,
              May be the below vba code can help you to extract the iimages and rename them wihtout the subfix number, please try. Hope it can help you!

              #If VBA7 Then
              Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
              #Else
              Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
              #End If
              Sub URLPictureInsert()
              Dim I As Integer
              Dim xStr As String
              Dim xFd As FileDialog
              Dim xArr, xFdItem As Variant
              Application.ScreenUpdating = False
              Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
              If xFd.Show = -1 Then
              xFdItem = xFd.SelectedItems.Item(1)
              xArr = Range("A2:B5").Value
              For I = 1 To UBound(xArr)
              If xArr(I, 1) <> "" Then
              xStr = Mid(xArr(I, 1), InStrRev(xArr(I, 1), "."), Len(xArr(I, 1)))
              URLDownloadToFile 0, xArr(I, 1), xFdItem & "\" & xArr(I, 2) & xStr, 0, 0
              End If
              Next
              End If
              Application.ScreenUpdating = True
              End Sub
              • To post as a guest, your comment is unpublished.
                david · 7 months ago
                Omg!! You just provided a miracle, It works like a charm. Thank you so much.
      • To post as a guest, your comment is unpublished.
        Justin · 1 years ago
        Couldn't get this to work can you show the completed code for this request?
  • To post as a guest, your comment is unpublished.
    DKcrm · 1 years ago
    Works great for pulling images, but they are put randomly and not in the expected cells... Excel 2016 from Office365...
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, DKcrm,
      Thank you for your comment, the code in this article has been updated, please try the new one, hope it can help you!
  • To post as a guest, your comment is unpublished.
    Iris De Smedt · 1 years ago
    Hi guys,
    It would love to get this working but when I copy this in VBA & click on run I only get this text:
    Sub URLPictureInsert()
    Can you please help me to get the picture thumbnail?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello,
      When applying the code, you can change the width and height size of the picture to match you cells.
      Thank you!
  • To post as a guest, your comment is unpublished.
    Taylor Hays · 1 years ago
    Is there any way to run this so that it is across a row instead of a column? I have tried simply changing the range and the final location of the image but it only ever produces the first cell.
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hi, Taylor,
      May be the following VBA code can help you to extract the real pictures in a row URLs:


      Sub URLPictureInsert()
      Dim Pshp As Shape
      On Error Resume Next
      Application.ScreenUpdating = False
      Set Rng = ActiveSheet.Range("A1:E1")
      For Each cell In Rng
      filenam = cell
      ActiveSheet.Pictures.Insert(filenam).Select
      Set Pshp = Selection.ShapeRange.Item(1)
      With Pshp
      .LockAspectRatio = msoTrue
      .Width = 100
      .Height = 100
      .Cut
      End With
      Cells(cell.Row + 1, cell.Column).PasteSpecial
      Next
      Application.ScreenUpdating = True
      End Sub

      Please try it, hope it can help you. Thank you!
  • To post as a guest, your comment is unpublished.
    Mark Boucher · 1 years ago
    To get this to work in Excel 2010 I had to add these declarations.


    Dim Rng As Range
    Dim cell As Range
    Dim filenam As String
  • To post as a guest, your comment is unpublished.
    Mark · 1 years ago
    In Excel 2010 I had to add these declarations

    Dim Rng As Range
    Dim cell As Range
    Dim filenam As String
  • To post as a guest, your comment is unpublished.
    Florent · 2 years ago
    Works perfectly but can anyone help me add something to check if the image exists and if it doesn't, post a text in the cell like "Image unavailable" ??
  • To post as a guest, your comment is unpublished.
    Jeremy · 2 years ago
    For me, all that shows up in each cell is the name of the method. They all say "Sub URLPictureInsert()"
  • To post as a guest, your comment is unpublished.
    belliney · 2 years ago
    AMAZING! this is so great! i had 350 rows of hyperlink and it took only 5 mins to pull all images!
    • To post as a guest, your comment is unpublished.
      Naresh · 1 years ago
      hey, can anyone attach a link of excel sheet with macro code enabled it so that i can download and experiment, I'm new to VB and I badly need to do this.
  • To post as a guest, your comment is unpublished.
    ZAFAR KHAN · 2 years ago
    Hi everyone, I have modified these code so that it works for the selected range instead of entering the specific range, However, can anyone suggest me how to modify these code to have the image in the centre of the cell. Currently the image is showing in the top left corner

    Sub URLPictureInsert()

    Dim Pshp As Shape

    Dim rCell As Range

    On Error Resume Next

    Application.ScreenUpdating = False

    For Each rCell In Selection

    filenam = rCell ActiveSheet.Pictures.Insert(filenam).Select

    Set Pshp = Selection.ShapeRange.Item(1)

    With Pshp

    .LockAspectRatio = msoTrue

    .Width = 100

    .Height = 100

    .Cut

    End With

    Cells(rCell.Row, rCell.Column + 1).PasteSpecial

    Next Application.ScreenUpdating = True

    End Sub
  • To post as a guest, your comment is unpublished.
    Moses · 2 years ago
    Thank you. It worked for me

    How do i change/modify the syntax to display image url's that are password protected
  • To post as a guest, your comment is unpublished.
    Russell Thrasher · 2 years ago
    Run-time error '1004':
    Unable to get the insert property of the Pictures class
    • To post as a guest, your comment is unpublished.
      Meg Russell · 2 years ago
      This is not working for me either. I have Excel 2013 and I simply need a straightforward piece of code that will insert images besides the urls that are in a column in my spreadsheet. Every single solution I have tried that is available via Google Search or via YouTube has rendered a pictures insert value error. What am I doing wrong??? Are the urls supposed to NOT be hyperlinks? Are they SUPPOSED to be hyperlinks? Am I supposed to identify the column range that the output goes to? I can't find a simple to follow set of instructions anywhere, please help. When I use YOUR code, I get "Unable to get the insert property of the Pictures" class:
      • To post as a guest, your comment is unpublished.
        Peter · 2 years ago
        I had the same problem and it turns out you need to check your url. if it is HTTPS that means it is a secure connection and VBA will not be able to extract it. if it is a regular HTTP there should be no problem
  • To post as a guest, your comment is unpublished.
    Danny · 2 years ago
    What issue are you getting?
  • To post as a guest, your comment is unpublished.
    RadmilaHU · 2 years ago
    I have tried the formula, but it does not seem to work. Would it have to do something with the version of Excel (I have the newest version, though)

    I appreciate your answer
  • To post as a guest, your comment is unpublished.
    Danny · 2 years ago
    This was a great help, ty so much
  • To post as a guest, your comment is unpublished.
    Shayla · 2 years ago
    Could you change the "on error resume next" to something that will wait until Google Chrome has time to open the picture? I tried this code and it works, but some of the pictures are getting pasted several rows below where they should, so I'm assuming the "on error" statement is not giving it enough time. If you think it could be something else or have any other suggestions, I'm open to hear it. Thanks!