- ベストアンサー
エクセルの関数およびマクロについて
お世話になります。 エクセルで,次のようにしたい場合はどうすればいいのでしょうか。 マイピクチャの中に,それぞれ320001~320005という名前の写真が計5枚入っています。 エクセルのA1のセルに,320001を入力すると,320001の名前の写真を表示,320002を入力すると320002の名前の写真を表示という具合にしたいのですが。 写真を表示するのは,どこか特定のセルでも構いませんし,図形(四角など)を挿入して,その中に表示でも構いません。 できれば関数で解決したいのですが,無理ならマクロでも結構です。 ご教授,よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
イメージコントロールを使います。 http://www.moug.net/tech/exvba/0090069.html このなかの最初のVBAプログラムで、ファイル名を特定セルから読むようにすればよいです。 Image1.Picture = LoadPicture(Range("A1").Value)
その他の回答 (2)
- tsubuyuki
- ベストアンサー率45% (699/1545)
せっかくですし、マクロを作るときの考え方を軽くだけ。 処理の流れとして、 ・「特定の名前」がついている図が有ったら、その図を削除 ・A1セルの内容を確認し、写真を挿入 ・表示したい位置に写真を移動 ・写真に「特定の名前」をつける という処理をするマクロを、セルの内容が変更されたときに走るように書いてやればOKです。 マクロを作り、管理出来るのであれば、こちらの方が遥かに簡単です。
- tsubuyuki
- ベストアンサー率45% (699/1545)
関数「のみ」ではおそらく、無理です。 マクロを使えばある程度簡単に出来ます。 ですが、マクロを使わず一般機能だけでもなんとかできます。 とりあえず、画像を二つに絞って手順を説明していきます。 文字だけで説明するのは困難なので、適宜、日本語を補ってお読みください。 まず、欲しい画像を一つのシートに並べます(シート名を「写真」とします)。 「写真」シートの行高・列幅は「全て同じ」にしておくと後が楽です。 おそらく、デフォルト(初期値)のままがやりやすいです。 1枚目の写真(320001)を挿入し、表示したいサイズに拡縮します。 写真を右クリック⇒サイズとプロパティから、「高さ」を10cmにしました。 これで、A1:G21の範囲にぴたりと合うサイズです。 2枚目の写真(320002)を挿入、同様に高さを10cmにして、 A23:G43の範囲に移動させます。 これで写真の準備が出来ました。(実際は5枚ですかね?必要分、同様に準備しましょう。) 続いて・・名前(範囲名)を定義します。 2007以降であれば、数式タブから「名前の管理」を選択。 ダイアログ内の「新規作成」ボタンを押します。 出てきたダイアログの「名前」に「_230001」、「参照範囲」は「A1:G21」として、OK。 もう一度「新規作成」し、「名前」に「_230002」、「参照範囲」は「A23:G43」として、OK。 2003以前なら、挿入メニューから名前⇒定義を、それぞれ選択します。 ダイアログ内の「名前」に「_230001」、「参照範囲」は「A1:G21」として、追加ボタン。 もう一つ、「名前」に「_230002」、「参照範囲」は「A23:G43」として、追加ボタン。 それぞれ2つ、名前が定義出来たらOKボタンで閉じます。 表示領域の準備をします。 F5キーまたはCtrl+Gを押し、ジャンプのダイアログを出します。 先ほど定義した「名前」が2つ表示されているはずですので、どちらかを選択し、OKします。 その状態で、Ctrl+Cでコピーします。右クリック⇒コピーはNGです。 表示したいシートをアクティブにし、 2007以降であればホームタブの貼り付けの「▼」のなかから「リンクされた図」を選択。 2003以前であれば、Shift+編集メニューから「図のリンク貼り付け」で貼り付けます。 先ほどの「ジャンプ」で選択した図が張り付くはずです。 これを表示したい場所に移動させます。 表示したいシートをアクティブにしたまま、名前をもう一つ、先ほどの手順で定義します。 「名前」には「表示画像」、参照範囲に「=INDIRECT("_"&$A$1)」とし、名前を追加しましょう。 画像の表示領域を選択し、数式バーに入っている参照式を「=表示画像」に書き換えます。 以上で準備完了です。 表示したいシートのA1セルに「320001」「320002」と半角で入力し、 画像が変わるのをご確認くださいませ。 おつかれさまでした。