Consejo: Otros idiomas son traducidos por Google. Puedes visitar el English versión de este enlace.
Iniciar sesión
x
or
x
x
Suscríbete
x

or

¿Cómo convertir URL de imágenes a imágenes reales en Excel?

doc url para img 1

Si tiene una lista de direcciones URL de imagen en la columna A, y ahora, desea descargar las imágenes correspondientes de las URL y mostrarlas en la columna B adyacente como se muestra a la izquierda en la captura de pantalla. En Excel, ¿cómo podría extraer las imágenes reales de las URL de las imágenes de forma rápida y sencilla?

Convierta las URL de imagen en imágenes reales con código VBA

Convierta las URL de las imágenes en imágenes reales con Kutools para Excel


Convierta las URL de imágenes en imágenes reales de forma rápida y sencilla

Kutools for Excel's Insertar imágenes desde la ruta (URL) La función puede ayudarlo a extraer todas las imágenes reales de los hipervínculos URL o rutas de imágenes. Haga clic para descargar Kutools para Excel!


Convierta las URL de imagen en imágenes reales con código VBA

El siguiente código VBA puede ayudarlo a extraer rápidamente las imágenes reales de las direcciones URL de la imagen, haga lo siguiente:

1. Mantenga presionado el ALT + F11 teclas para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

2. Hacer clic recuadro > Móduloy pegue el siguiente código en la Ventana del Módulo.

Código de VBA: convierta las URL de imagen en imágenes reales:

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

Notas:

  • 1. En el código anterior, A2: A5 es el rango de celdas que contiene las direcciones URL que desea extraer las imágenes, debe cambiar las referencias de celda a su necesidad.
  • 2. Con este código, no puede especificar el tamaño de las imágenes extraídas según sus necesidades.
  • 3. El código anterior solo puede extraer las imágenes estructurales en las celdas, además de su columna de URL, no puede especificar la celda para generar las imágenes.
  • 4. Debe tener algún conocimiento básico del código, si algún carácter se pierde o es incorrecto, el código no se ejecutará correctamente.

3. Entonces presione F5 clave para ejecutar este código, y todas las imágenes correspondientes se han extraído de las URL de la imagen a la columna adyacente de una vez, y las imágenes se colocarán en el centro de sus celdas específicas, vea la captura de pantalla:

doc url para img 2


Convierta las URL de las imágenes en imágenes reales con Kutools para Excel

Si no está familiarizado con el código VBA o quiere remediar la limitación del código anterior, Kutools for Excel's Insertar imágenes desde la ruta (URL) Esta función puede ayudarlo a insertar rápidamente las imágenes correspondientes según las direcciones URL o la ruta específica en su computadora.

Nota:Para aplicar esto Insertar imágenes desde la ruta (URL)En primer lugar, debes descargar el Kutools for Excel, y luego aplicar la característica de forma rápida y sencilla.

Después de instalar Kutools for Excel, haz lo siguiente:

1. Hacer clic Kutools > recuadro > Insertar imágenes desde la ruta (URL), en el cuadro de diálogo desplegado, configure las siguientes operaciones, vea capturas de pantalla:

doc url para img 3 doc url para img 4

2. Luego, haz clic Ok y las imágenes se extraerán de las URL, vea la captura de pantalla:

doc url para img 1

Haga clic para descargar y probar gratis Kutools for Excel Now!


Kutools for Excel: la mejor herramienta de productividad de Office aumenta su productividad en un 80%

  • Super Formula Bar (edite fácilmente varias líneas de texto y fórmula); Diseño de lectura (lee y edita fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas y mantener datos; Contenido de celdas divididas; Combinar filas duplicadas y suma / promedio... Prevenir células duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Celdas múltiples sin cambiar la referencia de fórmula; Crear referencias automáticamente a múltiples hojas; Insertar viñetas, Casillas de verificación y más ...
  • Fórmulas favoritas e insertadas rápidamente, Gamas, cuadros y cuadros; Cifrar celdas con contraseña Crear una lista de correo y enviar correos electrónicos ...
  • Extracto del texto, Agregar texto, Eliminar por posición, Eliminar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtro a otras hojas); Clasificación avanzada por mes / semana / día, frecuencia y más; Filtro especial por negrita, cursiva ...
  • Combinar libros de trabajo y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes xls, xlsx y PDF...
  • Funciona con Office 2007-2019 y 365, y es compatible con todos los idiomas. Es fácil de implementar en su empresa. Funciones completas de prueba gratuita de 60-day.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilitar la edición y lectura con pestañas en Word, Excel, PowerPoint, Editor, Acceso, Visio y Proyecto.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta tu productividad en un 50% y reduce cientos de clics de ratón por ti todos los días!
fondo officetab
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 · 3 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 · 5 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 · 10 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 · 6 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 · 7 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 · 7 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 · 6 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 · 1 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!