プロが教える店舗&オフィスのセキュリティ対策術

本来は①を行いたいのですが、方法が思いつかず②で作業しましたが、②でもうまくいかずです。
商品番号を入力すると、ネットワーク上の商品画像を表示させる方法があれば教えてください。

-----------------

シート1
・セルA1に商品番号をセルに入力すると、
 ex:1-12345、11-123など

・セルB1にネットワーク上にある商品番号に合致する商品画像を表示させたい
 ex:ファイル名:1-12345.jpg、11-123.jpgなど

-----------------

●シート2を作成し、
・A列に商品番号
 B列に商品番号にハイパーリンクを張る
 ex:=HYPERLINK("\\ネットワーク名\1-12345.jpg","画像を表示")

●シート1
・excelに商品番号をセルに入力すると、
 ex:1-12345、11-123など

・セルB1にシート2から商品番号に合致するハイパーリンク先を呼び出す
 ex:=HYPERLINK(VLOOKUP(A1,シート2!A:B,2,FALSE),"画像を表示")


上記でシート1のB1をクリックすると
「指定されたファイルを開くことができません。」
というエラーが出て画像が表示されません。

A 回答 (3件)

No2です。



別のことを調べていたら、こんなのを見つけました。
365環境であれば、関数で画像を表示することが可能なようです。
https://support.microsoft.com/ja-jp/office/image …

環境が無いので試していませんけれど、説明文通りだとすると、画像のあるサーバがhttpアクセスに対応している必要がありそうですけれど・・
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます(* ˆ ˆ *)
こんな事もできるのですね、もっと勉強して便利に使えるようになろうと思います。
残念ながら環境がなかったので今回はできませんでしたが。
ありがとうございましたm(_ _)m

お礼日時:2023/07/03 09:49

No1です。



実際の状態が不明なので、以下はいろいろ仮定や推測混じりになってしまいますが・・

>直接画像アドレスを作成できるなら、Excelの基本機能で、それの
>アドレスをHYPERLINKで指定するという方法は無いでしょうか?
商品名と画像名が一致していて、かつ、画像のアドレス(フォルダー)が固定であるとしてよいのなら可能です。
(シート2の表は不要になります)

ご例示のように、画像名が必ず商品番号に".jpg"の拡張子を付けたものになっており、一つのフォルダ内にまとめて入れてあると仮定します。
その条件下であれば、シート1のB1セルに
 =HYPERLINK("画像フォルダのフルパス\" & A1 & ".jpg","画像を表示")
としておくことで、実現できると思います。
(↑ フォルダパスの最後に「\」を付けておいてください)


画像を直接表示する場合には、マクロを利用しないとできませんけれど、上記と同じ仮定条件下でよいものとして、簡易的なものを作成してみました。

※ 「シート1」のシートタブを右クリックした際に表示されるメニューから「コードの表示」を選択し、表示されるエディタのコードウィンドウに以下をコピペします。
※ コード中の、「folderPath =」の後に、画像フォルダのフルパスを記入しておきます。

以上で、A1セルに商品番号を記入すると、B1セルに「その番号 + .jpg」の画像が表示されるようになるはずです。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim imgPath As String
Dim tRng As Range
Dim s As Shape

' *** 以下に画像フォルダのフルパスを記述しておく ***
Const folderPath = "\\X:\hoge\fuga"

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
Set tRng = Range("B1")

For Each s In ActiveSheet.Shapes
If s.Top >= tRng.Top And s.Top < tRng.Top + tRng.Height _
And s.Left >= tRng.Left And s.Left < tRng.Left + tRng.Width Then
s.Delete
End If
Next s
tRng.Value = ""
If Range("A1").Value = "" Then Exit Sub

imgPath = folderPath & "\" & Range("A1").Text & ".jpg"
If Dir(imgPath) = "" Then
tRng.Value = "NO IMAGE!"
Exit Sub
End If

With ActiveSheet.Shapes.AddPicture(imgPath, _
False, True, tRng.Left, tRng.Top, Width:=-1, Height:=-1)
.LockAspectRatio = True
.Width = tRng.Width
If .Height > tRng.Height Then .Height = tRng.Height
.Top = tRng.Top + (tRng.Height - .Height) / 2
.Left = tRng.Left + (tRng.Width - .Width) / 2
End With
End Sub
    • good
    • 0
この回答へのお礼

早速ありがとうございます。ハイパーリンクの方でできました。
マクロの方もご丁寧にありがとうございました。
ただ、まだ私がマクロがわからないので、学んで使える様になるまで
大事に保存しておき、その際使用させていただきます。
本当にありがとうございました。

お礼日時:2023/06/28 19:15

こんばんは



実際の状態がちょっとはっきりしませんけれど・・

>A列に商品番号
>B列に商品番号にハイパーリンクを張る
に対して、
>ex:=HYPERLINK(VLOOKUP(A1,シート2!A:B,2,FALSE),"画像を表示")
とした場合、第一引数に当たる
 VLOOKUP(A1,シート2!A:B,2,FALSE)
の計算結果は、シート2の「画像を表示」という文字列を返していませんか?
その結果、
>「指定されたファイルを開くことができません。」
となっているということはありませんか?

HYPERLINK関数の第一引数には、リンク先のアドレスを指定する必要がありますので、シート2のB列にはリンクではなく画像のあるアドレスを記入しておく必要があると思われます。


>商品番号を入力すると、ネットワーク上の商品画像を表示させる方法があれば教えてください。
いくつかの方法が考えられます。

ただし、エクセルの基本機能だけで行う場合には、「ネットワーク上の画像」ではなく、そのエクセルに一旦画像を読み込ませておく必要があります。
以下は、その様な方法の説明ページの例です。
(検索すれば、他にもいろいろ見つかります)
https://k-ohmori9616.hatenablog.com/entry/2019/0 …
http://officetanaka.net/excel/function/tips/tips …


数が多かったり随時更新されたりするので、シートに画像を読み込ませたくないような場合には、マクロを利用することで可能になります。
前準備として、シート2に商品番号と画像アドレスの一覧を作成しておく必要はありますが。
『シート1のA1セルに番号が入力されたら、該当する商品を表から検索し、それに対応する画像を読み込んで表示する』
という内容のマクロを作成しておけば、番号の入力で画像を表示することが可能になります。
(ご例示のように、商品番号と画像名称が必ず一致しているようなら、直接画像アドレスを作成できるので一覧表も不要になります)

マクロで画像を読込んで表示する例も検索すればたくさん見つかると思いますが、ここの質問蘭でも時々見かけます。
以下は一例です。
https://oshiete.goo.ne.jp/qa/9966334.html
https://oshiete.goo.ne.jp/qa/13123440.html
    • good
    • 0
この回答へのお礼

fujillinさん、早速ありがとうございます。
画像は思ったより単純ではないのですね…
検索で出てくる様な事を、質問してすみません。理解が乏しく検索ワードが上手く選べて無かったみたいです(ノω・、)

HYPERLINKで第一引数が、リンク先のアドレスを指定になってませんね…
関数の性質を分かってませんでした。

現状、私はExcelの基本機能しか使えず、マクロは今は出来ないのですが、
画像数が多く、随時更新されたりするので、できればシートに画像を読み込ませたくないので。
時間がかかってもマクロを勉強しようと思います。

追加の質問して良いかわかりませんが…可能でしたら教えてください。
マクロの場合に、「商品番号と画像名称が必ず一致しているようなら、直接画像アドレスを作成できる」と書かれてますが、具体的にはどういうことですか?理解できてなくて…

あと、初心者で見当違いな質問かもしれませんが…
直接画像アドレスを作成できるなら、Excelの基本機能で、それのアドレスをHYPERLINKで指定するという方法は無いでしょうか?

お礼日時:2023/06/28 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!