Як я можу відобразити URL-адресу як зображення у комірці excel?


7

Чи можете мені хтось пояснити, як перетворити веб-посилання (URL) на зображення.

Приклад зображення (URL-адреса http://cache.lego.com/media/bricks/5/1/4667591.jpg)

http://cache.lego.com/media/bricks/5/1/4667591.jpg

Що я намагаюся зробити, це зробити список завантажених нами частин відображати зображення, а не вищенаведене посилання.

Що я маю в J2 - J1903:

http://cache.lego.com/media/bricks/5/1/4667591.jpg
http://cache.lego.com/media/bricks/5/1/4667521.jpg
...

Що я хотів би зробити, це отримати Excel, щоб перетворити всі ці (10903 з них) зображення (розмір комірки 81х81).

Може хтось, будь-ласка, пояснить крок за кроком, як я це можу зробити?


В Office 2007 Ви можете перейти до insert- Object- Create from fileі вставити URL-адресу туди. Він відображатиме об’єкт із піктограмою зображення на робочому аркуші excel, але не із мініатюрою фактичного файлу. Ви можете двічі клацнути його для відображення. Якщо вам потрібні ескізи, я думаю, вам доведеться завантажити файли на локальний hdd та перетягнути їх у файл вручну.
mnmnc

Насправді я знайшов спосіб. Просто перейдіть до вставки картинки та в діалоговому вікні вставте URL-адресу як ім'я файлу. Це просто.
mnmnc

Хамму, здається, це не подобається? помилка "Немає зв'язку з сервером. Файл cache.lego.com/media/bricks/5/1/4121667.jpg не можна відкрити, оскільки з сервером не вдалося зв’язатися.
Дейв Грей

Це скоріше проблема з боку вашого клієнта / мережі. Я перевірив його на URL-адреси, надані вами, і це спрацювало як шарм. Яку версію Office ви використовуєте?
mnmnc

Я використовую 2010 р. Просто подумайте, чи є швидший спосіб зробити всі 1903? збираються дні.
Дейв Грей

Відповіді:


6

Якщо у вас є набір посилань у стовпці J :

введіть тут опис зображення

і ви запускаєте цей короткий макрос VBA:

Sub InstallPictures()
    Dim i As Long, v As String
    For i = 2 To 1903
        v = Cells(i, "J").Value
        If v = "" Then Exit Sub
        With ActiveSheet.Pictures
            .Insert (v)
        End With
    Next i
End Sub

кожне з посилань буде відкрито, а відповідне зображення розміститься на робочому аркуші.

Фотографії повинні бути належним чином розміщеними та розміщеними.

Редагувати №1:

Макроси дуже прості в установці та використанні:

  1. ALT-F11 відкриває вікно VBE
  2. ALT-I ALT-M відкриває новий модуль
  3. вставити матеріал і закрити вікно VBE

Якщо ви збережете робочу книгу, макрос буде збережено разом із нею. Якщо ви використовуєте версію Excel пізніше 2003 року, ви повинні зберегти файл як .xlsm, а не .xlsx

введіть тут опис зображення

Щоб видалити макрос:

  1. піднести вікно VBE, як вище
  2. очистити код
  3. закрити вікно VBE

Щоб використовувати макрос з Excel:

  1. ALT-F8
  2. Виберіть макрос
  3. Торкніться RUN

Щоб дізнатися більше про макроси в цілому, див:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

і

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Макроси повинні бути включені, щоб це працювало!

ЗРІД №2:

Щоб не зупинятися на помилках пошуку, використовуйте цю версію:

Sub InstallPictures()
    Dim i As Long, v As String
    On Error Resume Next
        For i = 2 To 1903
            v = Cells(i, "J").Value
            If v = "" Then Exit Sub
            With ActiveSheet.Pictures
                .Insert (v)
            End With
        Next i
    On Error GoTo 0
End Sub

Якщо це працює, це справді приємна відповідь.
mnmnc

Я не нападав на жорстку частину ...... всі фотографії повинні бути розміщені тощо.
Студент Гері

Це як писати програмне забезпечення для клієнта за наданими специфікаціями - завжди є прихована необхідна функція, яка чекає за кутом, чекаючи, коли її виявлять.
mnmnc

Привіт Спасибі, я зробив ALT F11, скопіював і вставив Sub InstallPictures () Dim i As Long, v As String For i = 2 To 1903 v = Cells (i, "J"). ActiveSheet.Pictures .Insert (v) Кінець Sub та Next Sub, але я отримую помилку компіляції Недійсна поза процедурою?
Дейв Грей

@DaveGray Можливо, це проблема встановлення .... дивіться мою редакцію №1
студент Гері

1

Цей працює набагато краще тим, що зображення закінчується поруч із коміркою, до якої належить.

Option Explicit
Dim rng As Range
Dim cell As Range
Dim Filename As String

Sub URLPictureInsert()
    Dim theShape As Shape
    Dim xRg As Range
    Dim xCol As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    Set rng = ActiveSheet.Range("C1:C3000")   ' <---- ADJUST THIS
    For Each cell In rng
        Filename = cell
        If InStr(UCase(Filename), "JPG") > 0 Then   '<--- ONLY USES JPG'S
            ActiveSheet.Pictures.Insert(Filename).Select
            Set theShape = Selection.ShapeRange.Item(1)
            If theShape Is Nothing Then GoTo isnill
            xCol = cell.Column + 1
            Set xRg = Cells(cell.Row, xCol)
            With theShape
                .LockAspectRatio = msoFalse
                .Width = 100
                .Height = 100
                .Top = xRg.Top + (xRg.Height - .Height) / 2
                .Left = xRg.Left + (xRg.Width - .Width) / 2
            End With
isnill:
            Set theShape = Nothing
            Range("A2").Select
        End If
    Next
    Application.ScreenUpdating = True

    Debug.Print "Done " & Now

End Sub

1

Це моя модифікація:

  • Замінити клітинку посиланням на зображення (не новий стовпець)
  • Зробіть збереження зображень разом із документом (замість посилань, які можуть бути крихкими)
  • Зробіть зображення трохи меншими, щоб вони мали можливість сортувати їх клітинки.

Код нижче:

Option Explicit
Dim rng As Range
Dim cell As Range
Dim Filename As String

Sub URLPictureInsert()
    Dim theShape As Shape
    Dim xRg As Range
    Dim xCol As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    ' Set to the range of cells you want to change to pictures
    Set rng = ActiveSheet.Range("A2:A600")  
    For Each cell In rng
        Filename = cell
        ' Use Shapes instead so that we can force it to save with the document
        Set theShape = ActiveSheet.Shapes.AddPicture( _
            Filename:=Filename, linktofile:=msoFalse, _
            savewithdocument:=msoCTrue, _
            Left:=cell.Left, Top:=cell.Top, Width:=60, Height:=60)
        If theShape Is Nothing Then GoTo isnill
        With theShape
            .LockAspectRatio = msoTrue
            ' Shape position and sizes stuck to cell shape
            .Top = cell.Top + 1
            .Left = cell.Left + 1
            .Height = cell.Height - 2
            .Width = cell.Width - 2
            ' Move with the cell (and size, though that is likely buggy)
            .Placement = xlMoveAndSize
        End With
        ' Get rid of the 
        cell.ClearContents
isnill:
        Set theShape = Nothing
        Range("A2").Select

    Next
    Application.ScreenUpdating = True

    Debug.Print "Done " & Now

End Sub
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.