How to get images to appear in Excel given image url
I'm creating a csv file with one of the columns containing an url of an image (e.g., 开发者_运维知识库www.myDomain.com/myImage.jpg
).
Dim url_column As Range
Dim image_column As Range
Set url_column = Worksheets(1).UsedRange.Columns("A")
Set image_column = Worksheets(1).UsedRange.Columns("B")
Dim i As Long
For i = 1 To url_column.Cells.Count
With image_column.Worksheet.Pictures.Insert(url_column.Cells(i).Value)
.Left = image_column.Cells(i).Left
.Top = image_column.Cells(i).Top
image_column.Cells(i).EntireRow.RowHeight = .Height
End With
Next
As Excel behaviour has apparently changed over years, you might want to specify more parameters to the Insert
call explicitly:
For people landing here. Different versions of Excel handle this request differently, Excel 2007 will insert the picture as an object, ie embed it in the workbook. Excel 2010 will insert it as a link, which is bad times if you plan on sending it to anyone. You need to change the insert to specify that it is embedded:
Insert(Filename:= <path>, LinkToFile:= False, SaveWithDocument:= True)
On Google Sheets you can add the IMAGE(url) method to your CSV file and it will be rendered (Tested on Google Sheets).
Here is an example:
=IMAGE("http://efdreams.com/data_images/dreams/lion/lion-03.jpg")
I had same issue. My solution was:
- import csv to Excel,
- from excel copy table to Google Sheets
- in Google Sheets use =IMAGE("http://example.com/01.jpg") on column you want to have images. Google Sheets load the images,
- just copy all back to Excel.
In excel images will be in original sizes but always started on apropriate row, so just select all and change width or height of all images. If you change only height by height of the row, you will have everything ordered and positioned right.
精彩评论