質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

2513閲覧

エクセルにて画像URLを特定のセルに画像として表示させる方法

keita1101

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/07/30 10:13

Excelにおいて、画像URL(フルパス)が入力されている列があったとして
─────────────────────
例:
A|                  |C|D|F|
https://example.com/img/img1.jpg
https://example.com/img/img2.jpg
https://example.com/img/img3.jpg
─────────────────────
Aの列それぞれの画像パスをFの列に表示をすることは可能なのでしょうか。
既出のもも試してみたのですが、VBAの知識が浅く、思った通りにできませんでした。

やり方をご教授いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2020/07/31 00:04

ご自身で試されたコードと、どのようにうまくいかなかったのか教えてください。
keita1101

2020/07/31 00:40

------------------- Dim c As Range For Each c In Range("A2:A200") With ActiveSheet.Pictures.Insert(fileName:=c.Value) .ShapeRange.LockAspectRatio = msoTrue .left = c.Offset(, 1).left .Top = c.Offset(, 1).Top .Width = c.Offset(, 1).Width If .Height > c.Offset(, 1).Height Then .Height = c.Offset(, 1).Height End If End With Next エラー文: PicturesクラスのInsertプロパティを取得できません。 ------------------- ご指摘いただきありがとうございます。 最期に試したのが、上記の内容です。
mako1972

2020/07/31 00:53 編集

コードを試してみました。下記のようにローカルファイルですと動作するようです。 C:\Users\Desktop\XX.jpg excel vbaでクローリングして外部サイトから外部画像をとってきたいという質問なのでしょうか・・。 それにより質問の意味やVBAのコードが全くが違うものになると思います。
keita1101

2020/07/31 01:03

mako1972 さん 回答ありがとうございます。 説明不足でした。おっしゃるとおり、ローカルではなく、インターネット上の画像のパスからとってきて表示をさせたいです。
radames1000

2020/07/31 01:12

すでに回答していますが、インターネット上の画像パスからも同じコードでとれますよ。ただし、Web側で画像を保存できないようにされていたらその限りではありません。
mako1972

2020/07/31 01:15 編集

スクレイピングする前提でほかの方のご指摘を参照いただくようお願いいたします。 スクレイピングですとInternetExplolerをvbaで操作するなど(IEは使わない方がいいですが) VBAのコードが変わってきます。 他の方がおっしゃる通り今後の拡張性やふるまいが変わる可能性がありますので・・。 質問の内容としてはExcel VBAでスクレイピングして画像を取得したい。 という質問だと思います。
keita1101

2020/07/31 01:28

radames1000 さん mako1972 さん 回答していただいたコードで対応することができました。 ありがとうございました!
guest

回答1

0

ベストアンサー

エラー文:
PicturesクラスのInsertプロパティを取得できません。

指定したURLが存在しない場合にこのエラーがでます。
コード自体はURLさえ正しければ動きますので、
URLを確認してください。
※F列に表示ならOffset(,5)に変更が必要

ただし、指定のURL先に許可が得られているか等
スクレイピングには他に考えるべことがあるので
ご留意ください。

エラーをスキップするなら

VBA

1Dim c As Range 2 3For Each c In Range("A2:A200") 4 On Error Resume Next 5 With ActiveSheet.Pictures.Insert(Filename:=c.Value) 6 .ShapeRange.LockAspectRatio = msoTrue 7 .Left = c.Offset(, 5).Left 8 .Top = c.Offset(, 5).Top 9 .Width = c.Offset(, 5).Width 10 If .Height > c.Offset(, 5).Height Then 11 .Height = c.Offset(, 5).Height 12 End If 13 End With 14 On Error GoTo 0 15Next

投稿2020/07/31 00:58

radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問