現在、別フォルダに写真を1000枚ほど管理しています。エクセルに写真を

解決済みの質問

現在、別フォルダに写真を1000枚ほど管理しています。エクセルに写真を

現在、別フォルダに写真を1000枚ほど管理しています。エクセルに写真を貼り付けると重たくなるので貼付けは避けたいです。商品が完売になった時は、その行を上へ切り取り貼付けで移動させたりもしますので、写真移動しないので貼付けは不可です。また、各商品ごとに該当写真にリンクも考えましたが、全て行なうと1000件もの膨大な作業になります。例えば、下記のように商品名、型番、価格、数量、写真のファイル名の一覧表であった場合、このようなことはできないでしょうか。(1)型番または、写真ファイル名の横に縮小写真が一覧で表示される。(2)写真のファイル名のセルをクリックすると、すぐ横に写真を表示。(3)写真のファイル名のセルをクリックすると、該当写真にリンクして表示。

  A     B      C     D      E
1  商品名  型番    価格    数量 写真
2   商品1  AAA-1    100    10   AAA-1.jpg
3  商品2  BBB-2    500    30   BBB-2.jpg
4   商品3  CCC-3   1000    15   CCC-3.jpg
~        
101 商品99 CCC-100  700    20   CCC-100.jpg

第1希望としては、(1)です。商品一覧表をの画面に表示されている商品名全てにその縮小写真が表示されると便利なのですが、無理な時は(2)のセルをクリックすることで、写真を表示。その場合、必要以外は写真も消せるようにしたいです。最後として別フォルダの写真にリンクさせることです。
当方にとっては難しいので、一件ずつ写真をリンクさせることくらいしかできません。上記のようなことができる方、教えて下さい。よろしくお願い致します。

投稿日時 - 2010-07-19 15:38:49

QNo.6049251

困ってます

質問者が選んだベストアンサー

F列に縮小写真を貼り付けます(サイズは行の高さに合わせます)
画像の存在するフォルダーのパスはコード中の定数に設定する必要があります。
作業用のワークシートを用います。下記ではSheet2としています。
実行都度、縮小画像を全部削除して、新規に貼り付け直す仕様です。
http://okwave.jp/qa/q5744704.html
が元々のコードですが、画像800個で、70~50秒程度かかりました。(PentiumM 1.3M)
画像にはハイパーリンクを設定しますので、クリックすると、ブラウザで元写真が表示されます。
xl2000用のコードなので、上位バージョンで動かなかったら悪しからず。また、中味の解説はいたしかねますので、興味を持たれたらご自分でお調べ下さい。
Sub test()
Dim lastRow As Long, i As Long
Const myFolder As String = "C:\Documents and Settings\?????\My Documents\"

lastRow = Range("E" & Rows.Count).End(xlUp).Row
'既存の画像の全削除
ActiveSheet.Pictures.Delete
For i = 2 To lastRow
Call setThumbnail(myFolder & Cells(i, 5).Value, Cells(i, 6), Sheets("Sheet2"))
Next i
End Sub

'引数 画像ファイルのフルパス、画像貼り付け先のセル、作業用のワークシート
'作業用のシートに縮小サイズで貼り付け後、目的のセルにコピー&ペーストします
Private Sub setThumbnail(picPath As String, destCell As Range, tempSheet As Worksheet)
Application.ScreenUpdating = False
tempSheet.Activate
ActiveSheet.Pictures.Insert(picPath).Select
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = destCell.Height
Selection.Copy
destCell.Parent.Activate
destCell.Select
ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=picPath
tempSheet.Activate
Selection.Delete
destCell.Parent.Activate
Application.ScreenUpdating = True
End Sub

投稿日時 - 2010-07-19 17:44:52

ANo.2

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.1

第1希望には程遠いですが
ハイパーリンクではダメですか

Excel2007には挿入リボンの中にあります。
Exsel2003 以前ではツールバーにあります

投稿日時 - 2010-07-19 16:03:10

あわせてチェックしたい
  • www.aaa.com/bbb/ccc.cと表示させたい ...
  • aaa.bbb.ccc という、「ドット」で区切られた文字列があった場 ...
  • perl qw(aaa bbb ccc)[$hoge]のような記述 ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら