No.6ベストアンサー
- 回答日時:
>社員IDをA1セルに入力すると、
なので Worksheet_Changeイベントで処理を行いました。
>別のマクロ作業に・・・ 「スピナー」によってA1セルの数値が増減したとき
ならWorksheet_Changeに変わりCalculateイベントを使われては如何でしょうか
Private Sub Worksheet_Calculate()
Dim myPath As String, fn As String
myPath = "C:\pic\"
fn = Range("B6").Value
With Me.OLEObjects("Image1").Object
.Picture = LoadPicture(myPath & fn)
.PictureSizeMode = 3
End With
End Sub
※ Worksheet_Changeイベント、Worksheet_Calculateイベントは
どの様な時に実行されるプロシージャかは、ご自分で調べてくださいね。
ネット上で、
まして8月のこの時期に、
ここまで迅速に、、、
それも何度もご回答をいただけるとは、驚きとともに感謝をしております。
calculateとchangeについても、理解ができました。
お陰様で、今回、エクセルのマクロについて(シートモジュールというものも含めて)、大変勉強になりました。
そして実際に問題を解決することができました。
今、やってみたところうまく行きました。
ほんとうに本当に、
どうもありがとうございました。
No.5
- 回答日時:
>画像表示前は灰色のもの」で正しいでしょうか?
それです。
>頂戴したマクロ(上のプログラムです)名も、image2としました。(→正しい手順でしょうか?)
With Me.OLEObjects("Image1").Object
↓
With Me.OLEObjects("Image2").Object
と、現状に合わせて直してください。
> (→やはり、正解は拡張子付きの方でしょうか。)
必ず拡張子は付けてください。
>If Target.Address <> "$A$1" Then Exit Sub
>このコードの意味を教えていただけますでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
このコードはChangeイベントと言い、シート上のセルに値を入力すると動くようになっています。
"$A$1" つまり A1セル以外の値の変化には作動しないようになっています。Exit Sub
A1セルに何らかの値が入力されるとイメージコントロールに"C:\pic\12.jpg" の情報を与え写真を表示するようになってます。
写真が表示されないのは、たぶんイメージコントロールをシートに貼り付けた時、コントロールボックス内の
三角定規のボタンが押された状態(デザインモード)のままではないでしょうか
そうであれば、これを押して、デザインモードを終了してください。
これでも解決しないときは、OSおよびExcelのバージョンも知らせてください。
ちなみに標準モジュールに以下のコードを張り付けて写真表示のテストはできます。
Sub 表示()
With ActiveSheet.OLEObjects("Image1").Object
.Picture = LoadPicture("C:\pic\12.jpg")
.PictureSizeMode = 3
End With
End Sub
Sub 非表示()
With ActiveSheet.OLEObjects("Image1").Object
.Picture = LoadPicture("")
.PictureSizeMode = 3
End With
End Sub
この回答への補足
ご丁寧に、一つ一つお答えをいただきまして、本当にどうもありがとうございます。
そして…できました。
ついに表示されるようになりました!
恐れ入りますが、もう一つご相談をさせてください。
このマクロ(シートモジュールというのでしょうか)は、
たしかにA1セルの値を変更したときに、反応してくれます。
ところが、反応してくれるのは私(人間)が直接セルの数字を入力したときだけです。
別のマクロ作業によってA1セルの値が変わった場合や、
「スピナー」(も、A1セルの横に設置したのですが)によってA1セルの数値が増減したときにも、やはり反映してくれないようです。
…もしも「マクロによる数値の変更」や「スピナー操作による値の増減」にも、反応してくれるようになれば、なお美しいと思うのですが、何か方法は有りますでしょうか…。
いろいろとご要望ばかりですみません。
どうぞよろしくお願いいたします!
No.4
- 回答日時:
No.3です。
参考URLを載せるのを忘れてしまったので、載せます。何度も申し訳ありません。参考URL:http://officetanaka.net/excel/function/tips/tips …
No.3
- 回答日時:
一般機能の「図のリンク貼り付け」、「名前」と、INDIRECT関数という3つの機能を組み合わせると、ご要望の仕組みができます。
説明に骨が折れるので、参考URLを真似してみてください。参考URLのC12セルが「社員ID」を入力するセルに相当します。式の入力時は、「$」マークを忘れないでください。このようにちょっと複雑な参照の仕方をする理由は、図に対してリンクとして式を設定するとき、名前は設定できるが、INDIRECT関数は直接には設定できないからです。社員さんたちの写真集は別シートに用意しておいて、それを呼び出すという形でも良いかもしれません。ま、あまり多数の写真を1ファイル内に貼ったりすると、ファイルが重くて仕方なくなる可能性もありますが…。 エクセルファイルに写真を貼り付ける方法も良いかとは思いましたが、
今回は、別の方法を採用いたしました。
ですが、このような方法もあるものと、大変参考になりました。
ご回答、どうもありがとうございました!
No.2
- 回答日時:
>これをマクロで実行する方法はありますでしょうか?
まず、VLOOKUPで写真に使うファイル名(○△.jpg)を取得してください
シート上にコントロールツールボックスからイメージコントロールを貼り付けてください。
社員IDはA1セル
それにより写真のファイル名が得られるセルをB6としました。
以上の準備がてきたら以下のコードをシートモジュールに貼り付けてください。
(シートモジュール:シートタブを右クリックして[コードの表示]を選択すると現れる画面)
A1セルに社員IDを入力するとイメージコントロールに写真が表示されます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myPath As String, fn As String
If Target.Address <> "$A$1" Then Exit Sub
myPath = "C:\Documents and Settings\ユーザー名\My Documents\My Pictures\" '写真が保存されているパス
fn = Range("B6").Value '実際のファイル名が得られるセルを指定
With Me.OLEObjects("Image1").Object
.Picture = LoadPicture(myPath & fn)
.PictureSizeMode = 3
End With
End Sub
この回答への補足
本当にどうもありがとうございます。
現在、取組中ですが、壁に行き当たりました。
再度、質問をさせてください・・。
・イメージコントロールとは
コントロールツールボックスの左下にある「山・空・太陽のアニメーション」のボタンのもの → 画像表示前は灰色のもの」で正しいでしょうか?
・このイメージコントロールとおもわれるものを、何度か削除したり再度作ったりしたため、名前が「image1」ではなく、(プロパティを見てみると、「image2」になっていました。→したがって、頂戴したマクロ(上のプログラムです)名も、image2としました。(→正しい手順でしょうか?)
・ファイル名は「社員番号12」に対して、
A1セルには、12という数値を入力されています。
すると、B6セルには「12.jpg」という表示が出てきます。
(しかし、画像が出てこなかったので、jpgは不要かと考え、B6セルの値を「12」のみにしました。これもダメでした。
(→やはり、正解は拡張子付きの方でしょうか。)
・If Target.Address <> "$A$1" Then Exit Sub
このコードの意味を教えていただけますでしょうか。
何か、ここに誤りがある可能性も考えましたので…。
・ Cドライブ内に「pic」という新規フォルダを作り、その中に12.jpgを保存しました。
したがって、コードも
myPath = "C:\pic\"
としました。
(これで、問題ありませんでしょうか?)
沢山書いてしまいましたが、
アドバイスを頂けますと幸いです。
本当にどうもありがとうございます。
No.1
- 回答日時:
私も、以前EXCELで社員リストを作成しました。
写真をどのような形で保存されているか不明なので
私が作った方法を書きますね。
■データベースの作成
・画像は、社員リストのエクセルが保存されているフォルダーに保存する。
・社員の情報にその画像のハイパーリンクを作成する。
・ハイパーリンクは、セルで右クリックで出て来ますので該当する画像を選ぶ。
・表示は、保存アドレスでも名前でも。
・画像ファイル、社員ID_名前などがいいでしょう。(探しやすいので)
■ID検索用の作成
・写真以外は、VLOOKUP
・画像は、VLOOKUPとHYPERLINKの組み合わせで表示
=HYPERLINK(VLOOKUP(A1,社員データの範囲,ハイパーリンクの列番号)
これで、IDを入力すると、画像のリンクが表示されますのでクリックすれば、画像が表示出来ます。
質問者様は、リンクではなく、画像がそのまま表示させたいのでしょうか?
それですと、私は技術不足です。
すみません・・・
ご参考までにして頂ければ幸いです。
ハイパーリンクの使い方について、参考になりました…。
今回は、画像をそのまま表示したかったので、別の方法を検討していきますが…
ご丁寧に、回答をいただきまして、どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) エクセル 指定セル繰り返しマクロ 4 2022/06/06 17:08
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- Excel(エクセル) Excel2016 行間を詰めたい&同じカテゴリなら上位2つだけを表示したい 5 2022/06/03 12:19
- Excel(エクセル) エクセル関数のXlookupのフィルハンドル機能(類した機能でも可)を知りたいです。 3 2022/09/20 20:02
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
エクセルの貼り付け「リンクさ...
-
大学のレポート A4で1枚レポー...
-
エクセルでXLOOKUP関数...
-
会社PCのメールが更新されない
-
エクセルのシフト表を簡単にGoo...
-
Excelのセルの重複チェックが出...
-
outlookのメールが固まってしま...
-
エクセルでレーダーチャートの...
-
teams設定教えて下さい。 ①ビデ...
-
オフィス365のエクセル
-
Microsoft Edgeの「ニュースと...
-
Microsoft Office Personal 2021
-
Excelで空白以外の値がある列の...
-
Excel テーブル内の空白行の削除
-
マクロ自動コピペ 貼り付ける場...
-
Excel2019と365、2021
-
Outlook 2021 アカウント設定時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Office 2021 Professional Plus...
-
エクセルで例えば、関数を使っ...
-
Microsoft Formsの「個人情報や...
-
1つのPCに「Excel 2010」「Exc...
-
エクセルで例えば、A1に㈱ベ...
-
理由を教えてください。
-
エクセルでXLOOKUP関数...
-
マイクロソフト オフィスについて
-
VLOOKUP関数について
-
teams設定教えて下さい。 ①ビデ...
-
Googleのスプレッドシートでシ...
-
【Excel VBA】PDFを作成して,...
-
Microsoft365で写真をアルバム...
-
Outlook で宛先が複数の場合の人数
-
Excel テーブル内の空白行の削除
おすすめ情報