2016-05-12 25 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

フムを制御します。あなたは*働いていない*のURLを共有することはできますか? – BruceWayne

+0

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

+0

@David Zemensが提供するプログラムコードをご覧になりたいのですが、質問URL 得られたサンプル結果は、ドロップボックスのビデオリンクにアップロードされます。 8154q6czdmju99b/ice_screenshot_20160513-011849.jpeg?dl = 0> 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. マイクロソフトのインターネットでは、それは私のために働いて
  2. のMicrosoft HTMLオブジェクトライブラリ
+0

私の他のコメントを確認してください –

+0

URLは私にエラーを与えない、それは間違った結果を与える.. –

関連する問題