- 締切済み
エクセルで画像をこのように表示は可能ですか?
エクセルに画像をはりつけて表示させたいのですが、 貼り付けた画像は普段は消えていて(閉じていて)、表示させたいときだけタブをクリックしたら表示されるか、カーソルを持っていったら表示されるようにしたいです。 例えば「J1」に画像を貼り付けたら、普段は消えていて、見たい時だけ上記のような方法で表示させたいですが可能でしょうか? ハイパーリンクも試しましたが、少しちがいました。 コメントの挿入で画像を貼り付けた時が、こういう風にしたいとおもっていたやり方に近かったのですが、画像を開いた時に、画像が右の方に切れてしまいます。 モニター全体をキャプチャした画像を表示させたいので、画像はできればモニター全体に表示させたいのですが、無理でしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tsubu-yuki
- ベストアンサー率46% (179/386)
結論から言うと、 完全に希望通りの動きは不可能、違う形で構築は可能 というところでしょうか。 回答しやすい順に。 > 画像はできればモニター全体に表示させたい いわゆるフルスクリーンだとすると、これは無理と思って結構かと。 エクセルの表示画面範囲を超える表示は不可能です。 他のアプリケーションを起動して・・という手はありますが、 パソコン次第では動作が遅く、使い物にならないだろうなぁ、と思います。 次。 > コメントの挿入で(中略)画像が右の方に切れてしまいます。 同様に、コメント枠が右にはみ出るのは仕様ですので、 これも根本的解消は不可能かと思われます。 で、 > 表示させたいときだけタブをクリックしたら表示されるか タブってどういうイメージでしょう? 私はどうしても「シート名のタブ」をイメージしてしまうのですが、 きっと違うものなのでしょう。 続けて > カーソルを持っていったら表示される いわゆるマウスオーバーですか。 ユーザーフォームの中でなら実現できると思いますが、 ワークシート上でやるとなるとかなり困難でしょうか。 どちらにしてもソコソコのVBAに関する知識が欲しいですね。 > 「J1」に画像を貼り付けたら、普段は消えていて、見たい時だけ表示させたい 出来ないことはないですが、やはりVBAの知識は必須です。 逆に、VBAの知識が少しでもあれば、その選択肢に行き着くでしょう。 手順として考えられるのは(私が作るなら)2パターン (1)トリガーをクリックするとイベント発生 行高・列幅を表示領域一杯に大きくする(例えばJ行と1列目) セル一杯のサイズで画像を挿入(あるいはサイズ変更) 画像をクリックすると画像を削除(あるいは小さくサイズ変更) 行高・列幅を基に戻す (2)トリガーをクリックするとイベント発生 テキストボックス(あるいは四角など、枠になるもの)を画面一杯のサイズで挿入 その枠内に画像を挿入し、サイズ調整 画像をクリックすると枠ごと削除 のどちらかでしょうね。 と、少し真剣に考えてみましたが、おそらく徒労なのでしょうね(笑)。
- imogasi
- ベストアンサー率27% (4737/17069)
できると思います。しかし質問者がVBA、さらに進んで、「イベント」というものの経験がなければ、「できますか」と聞いても、意味がないでしょう。コードを書いてくれという要求か? 中級以上のVBAの経験と慣れが必要と思う。 イベントというのは、素人が要求する(思いつく)やりたいことに、素直に応える方法と思うが、段階を踏んで勉強が必要な、むつかしい面もある。一般のエクセル以外のアプリでも、ざらに使えるものではない。 ーー #1の回答は、ユーザーフォームを使った方法だが、「イベント」の起こし方は色々ある。 ーー 下記はシートに「図形」を1つ貼り付け、そのクリックで、消去と再表示をサイクリック(回転的)に行う例を挙げる。 ーー まずエクセルシートの選択セルの位置に写真を置くコード。 下記は定番のコードで、WEB記事に似たものは沢山でいている。それの1つを使ってみた。 標準モジュールに Sub AddPicture() Dim myFileName As String Dim myShape As Shape myFileName = "C:\Users\XXX\Pictures\YYYY.jpg" '--(1) 選択したセル位置に画像ファイルを挿入し、変数myShapeに格納 Set myShape = ActiveSheet.Shapes.AddPicture( _ Filename:=myFileName, _ LinkToFile:=True, _ SaveWithDocument:=False, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=Selection.Width, _ Height:=Selection.Height) ’上記WとHは、セルの現状の大きさに従う例 '--(2) 挿入した画像に対して元画像と同じ高さ・幅にする。今回使わず。 ' With myShape ' .ScaleHeight 1, msoTrue ' .ScaleWidth 1, msoTrue ' End With End Sub シートに図形の四角を1つ張り付けて、その図形のクリックイベントのコードとして、下記を入れる。下記コードの何か所かの、Shapes(3).のインデックス番号3はテストを繰り返すと変わるので注意。最初は1. Sub 正方形長方形7_Click() If ActiveSheet.Shapes(3).Visible = False Then MsgBox "再表示します" ActiveSheet.Shapes(3).Visible = True Else MsgBox "消去します" ActiveSheet.Shapes(3).Visible = False End If End Sub を入れる == 上記の仕組みの欠点は、写真1か所につき図形1つを対応させているが、張り付ける写真が多いと、コードがしつこい。 セルのクリックイベントやその他の仕組みを使う方法もあると思うが、全般にシートなどのイベントになれないと、思わぬことになる。この方面の初心者なら、すぐに飛びつかないことだ。十分勉強してから使えと言いたい。 エクセルは、たくさんの図形などのイベントで、シートをつく使うものではないと思う。 「コメント」を入れるのは、VBAでAddCommentで難なくできる。略。 >画像が右の方に切れてしまいます 適当にシート上で大きくするのは上記のコードの延長でできると思う。 しかし、源画像データとの絡みなど勉強することが多すぎる点だ。 エクセルのシートを使うというのが素人っぽい。 質問者が勉強して、あるいはソフトを使って、画像を大きく表示する方法(多分プログラムやスクリプトが必要か?)VBAに当たるものは、他のソフトでは付属してないと思うが。
お礼
回答ありがとうございます。コードもありがとうございました
- eden3616
- ベストアンサー率65% (267/405)
お望みのような形ではないかもしれませんが、VBAにて。 わかりにくそうな所は添付画像を参考願います。 (1)シートタブを右クリックし「コードの挿入」からVBEを開き、 以下のVBAコードを貼り付ける。 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) UserForm1.Caption = Target.Range.Text UserForm1.PictureSizeMode = fmPictureSizeModeZoom UserForm1.Picture = LoadPicture(Target.ScreenTip) UserForm1.Show End Sub (2)VBEのメニューより「挿入」→「ユーザーフォーム」でフォームを作成し、 フォームを右クリックしてコードの表示を選択。 初期で入力されているコードを全て削除したのちに、以下のコードを貼り付け。 VBEを「×」で閉じる。 Option Explicit 'Windows API宣言 Private Const GWL_STYLE = (-16) Private Const WS_THICKFRAME = &H40000 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long ' フォームをリサイズ可能にするための設定 Public Sub FormSetting() Dim result As Long Dim hwnd As Long Dim Wnd_STYLE As Long hwnd = GetActiveWindow() Wnd_STYLE = GetWindowLong(hwnd, GWL_STYLE) Wnd_STYLE = Wnd_STYLE Or WS_THICKFRAME Or &H30000 result = SetWindowLong(hwnd, GWL_STYLE, Wnd_STYLE) result = DrawMenuBar(hwnd) End Sub Private Sub UserForm_Activate() Call FormSetting End Sub (3)任意のセル(例えばA1セル)に任意の文字を入力し、ハイパーリンクを作成します。 セル参照の入力はリンクを挿入したセルのアドレス「A1」とし、 ヒント設定にて表示させたい画像のパスを設定します。 対応しているファイル形式は(bmp・dib・gif・jpg・wmf・emf・ico・cur)になります。 作成したリンクをクリックするとウィンドウで画像が開きます。 リサイズ可能にしているため、大きさは変更できますが、開いた時の初期サイズは (2)で作成したユーザーフォームのサイズになります。
補足
ありがとうございます。やってみたのですが、うまくて出来てないかもしれないです。フォトビューアーも開いていいのでしょうか? 現状を画像を貼り付けて投稿しなおしてみますので、よかったらまた教えてください。回答ありがとうございました
お礼
回答してくれてありがとうございました。真剣に読まさせていただきました。