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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlook で宛先が複数の場合の人数
-
マクロ自動コピペ 貼り付ける場...
-
英数字のみ全角から半角に変換
-
Excel テーブル内の空白行の削除
-
会社PCのメールが更新されない
-
Microsoft365で写真をアルバム...
-
Microsoft Officeを2台目のPCに...
-
teams設定教えて下さい。 ①ビデ...
-
Microsoft Formsの「個人情報や...
-
outlookのメールが固まってしま...
-
【Excel VBA】PDFを作成して,...
-
大学のレポート A4で1枚レポー...
-
エクセルでXLOOKUP関数...
-
Outlook 電源OFFの受診の仕方
-
Office 2021 Professional Plus...
-
Officeを開くたびの「再起動メ...
-
会社のOutlookにてメールを予約...
-
何このステータスバー
-
エクセルのシフト表を簡単にGoo...
-
http://oshiete.goo.ne.jp/qa/1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
大学のレポート A4で1枚レポー...
-
Officeを開くたびの「再起動メ...
-
Microsoft Formsの「個人情報や...
-
one drive使えるpcを買う
-
マクロ自動コピペ 貼り付ける場...
-
PDFのハイパーリンクを自動的に変更し...
-
あらかじめ用意したテンプレー...
-
別シートの年間行事表をカレン...
-
【Excel VBA】PDFを作成して,...
-
エクセルでXLOOKUP関数...
-
office365って抵抗感ないですか?
-
ステータスバーの合計に表示さ...
-
【スプレドシート】IF関数の複...
-
Teamsで課題を提出します。 画...
-
Outlook で宛先が複数の場合の人数
-
Microsoft Officeを2台目のPCに...
おすすめ情報