この記事は、Excelでセル内のURLを参照して画像を表示する自作関数の記事です。
#SpreadSheetにあってExcelにない関数
URLを受け取ってセルに画像を表示する
=IMAGE("URL")
という関数がGoogle SpreadSheet にはあります。
##どんなときに使うの?
たくさんの商品の管理などをされている方に役立ちます。
シートにサムネイル画像の列をつくってデータの視認性を上げると
・商品などを探すスピードがアップ
・色違いの商品の発注ミス低減
といった効果があります。
一方で、画像の縦横比は無視されるのでビジュアル映えする印刷物を作成するには不向きかもしれません。
#ExcelでIMAGE関数を使うには?
標準モジュールに下記コードをコピーペースト。
標準モジュールがわからない方はコチラ
① {Excel アプリケーション}>{開発タブ}>[Visual Basic]でVBEditorを開く。 ※開発タブが表示されていない方はご自身でお調べお願いします。 ② {VBEditor}>{プロジェクトのウィンドウ}>[VBA Project ("ブック名")]>[右クリックメニュー]>[挿入]>[標準モジュール]をダブルクリック ![スクリーンショット 2020-08-11 08.33.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/70a0788c-8f74-61c9-0d4f-74f1625f65c9.png) ③ {コードのウィンドウ}>[適当な箇所]をクリックしてアクティブ状態にする。VBAコードをコピーアンドペーストする。 ![スクリーンショット 2020-08-11 08.34.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/b9a4fba3-d0ff-db23-55b4-739060fc85d4.png)'====================================================================
'サムネイル画像を表示するワークシート関数
'=IMAGE(A1)などでそのセルに画像を表示する
Function IMAGE(Optional URL = "")
With Application.ThisCell
'現在の状態をチェックして負荷軽減に役立てる
Dim shp As Shape
For Each shp In .Parent.Shapes
If shp.Type = msoLinkedPicture Then
If shp.TopLeftCell.Address = .Address Then
If shp.name = URL Then
IMAGE = ""
Exit Function
End If
End If
End If
Next
'新しいシェイプ画像をつくる
If URL <> "" Then
Set rg = Application.ThisCell
On Error GoTo NotFound
Set shp = .Parent.Shapes.AddPicture(URL, True, False, rg.Offset(, 0).Left, rg.Offset(, 0).Top, rg.Offset(, 0).Width, rg.Offset(, 0).Height)
shp.name = URL
On Error GoTo 0
shp.Placement = xlMoveAndSize
shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End With
IMAGE = ""
Set shp = Nothing
Exit Function
NotFound:
IMAGE = "Not Found"
Set shp = Nothing
End Function
Sub btn_DelIMAGE()
With ActiveSheet
'現在の画像を探して消す
Dim shp As Shape
For Each shp In .Shapes
If shp.Type = msoLinkedPicture Then shp.Delete
Next
End With
End Sub
・たとえばのセルに=IMAGE(A1)
と記述して、A1セルに入れたURLを参照して使いましょう。
・参照せず値を直接入れるときは=IMAGE("http://example/hoge.png")
など「"(ダブルクォーテーション)"」をお忘れなく。
#このコードの欠点(未解決)
・マウスポインタを重ねて「+」をドラッグして同じ関数で埋める機能が画像シェイプが邪魔で触れなくなる点
→この問題は@takahasinaoki さんによる以下の提案があります。
Ctrl+6 キーを押してみてください
画像シェイプが非表示になります。
↓
再度画像を表示するには、もう一度 Ctrl+6を押します。
https://www.i-skillup.com/lecture/EXCEL/key/2016/c61.php?skey=c_6
・マウスポインタを重ねて「+」をドラッグして同じ関数で埋める機能が画像シェイプが邪魔で触れなくなる点
画像のシェイプのみとりあえず削除
・縦横比無視して配置する点
一旦これにて記事は閉じます。
Excelでセル内のURLを参照して画像を表示する自作関数の記事は以上です