2016-05-12 2 views
0

В основном я пишу код, который захватывает URL-адреса изображений из списка и выводит их размер в ячейке. Он работает для некоторых ссылок, но не для всех. Может ли кто-нибудь сказать мне, почему это так?Как сохранить исходный размер изображения с помощью vba?

Dim MyPic As Shape 
Dim sht As Worksheet 

Set sht = ActiveSheet 


With sht 
    For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row 
    If .Cells(i, 2) <> "" Then 
     Set mypict = ActiveSheet.Shapes.AddPicture(.Cells(i, 2).Text, _ 
       msoFalse, msoTrue, 3, 3, -1, -1) 

     'Set mypict = ActiveSheet.Pictures.Insert(.Cells(i, 2).Text) 

     .Cells(i, 7) = mypict.Width & " x " & mypict.Height 
     mypict.Delete 
    End If 
    Next i 
End With 

С наилучшими пожеланиями,

Франциско

+0

Hm это работает для меня. Можете ли вы поделиться URL-адресом или тремя, где он не работает? – BruceWayne

+0

http://res.cloudinary.com/lo65iitez/image/upload/v1437773949/OMS/MHI-90102-YELLOW_full.jpg –

+0

Возможно, вам захочется взглянуть на программный код, данный @David Zemens на вопрос url Полученные примеры результатов загружаются, чтобы отключить связь с каналом Пожалуйста, изучите его, соответствует ли он вашим требованиям. Он также заботится о размере изображения, устанавливая LockAspectRatio – skkakkar

ответ

0

Как уже упоминалось выше, код работает для меня на URL, который дает вам сообщение об ошибке.

Однако, вот альтернативный код, который вы можете попробовать. Вы, вероятно, нужно подправить петлю/клетку, но в остальном это довольно просто:

Sub extract() 
Dim i&, lastRow& 
lastRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 2 To lastRow 

    Dim IE As InternetExplorer 
    Dim html As HTMLDocument 

    Set IE = New InternetExplorer 
    IE.Visible = False 
    IE.navigate Cells(i, 2).Value 

    ' Wait while IE loading 
    Do While IE.Busy 
     Application.Wait DateAdd("s", 1, Now) 
    Loop 

    Set html = IE.document 

    Dim webImage As Variant 
    Set webImage = html.getElementsByTagName("img") 

    Debug.Print "Image is " & webImage(0).Width & " x " & webImage(0).Height 
    Cells(i, 2).Offset(0, 1).Value = webImage(0).Width & " x " & webImage(0).Height 
    'Cleanup 
    IE.Quit 
    Set IE = Nothing 
Next i 

End Sub 

(Заслуга @PortlandRunner для основного кода). Обратите внимание, что вы будете нуждаться в двух справочных библиотек:

  1. Microsoft Internet Controls
  2. Microsoft HTML объектная библиотека
+0

, пожалуйста, проверьте мой другой комментарий –

+0

URL-адрес не дает мне ошибку, он просто дает неправильные результаты .. –

Смежные вопросы