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

エクセルで画像を自動貼り付けして、セルの大きさに合わせて縮小・拡大するマクロを作りました。

そこで、挿入した画像に上にポインタを持っていくと、画像の挿入元のファイル名を表示させたいと思っています。

最初は画像の裏にあるセルにコメントをつければいいと思っていたのですが


2000だと、画像の上にマウスポインタを置いても、画像を選択しても、コメントが表示されませんでした。
どうやら、裏のセルの見えている部分にポインタを置かないと表示されないみたいです。


(2007だと画像の裏にあるセルにコメントを付けておけば、画像の上にマウスポインタを置くとコメントが表示されます)


エクセル2000で画像にツールチップ(ファイル等の上にマイスポインタを置くと表示される黄色いコメントの事)を表示させる方法があれば教えてください。

A 回答 (3件)

VBAやマクロについてはど素人以下なので、まるっきり的はずれな方向からアプローチしますが・・・。


(ご希望から離れているとは重々承知しておりますが、もしかしたらってことで。)

挿入した画像を選択した状態で「ハイパーリンクの編集」を出し、「ヒント設定」ボタンから文字列を入力すると、画像の上にマウスカーソルを乗せると、「ヒント設定」で入力した文字列がチップ表示されます。
ただ、マウスカーソルが画像にのったとたんに「指」になりますので、違和感もかなりあります。
(2003で試しましたが、2000でも同じ機能はあったと思います。)

この回答への補足

中々確認とれず、返事が遅れてしまいました。申し訳ないです。
2000で確認してみたところ、確かにそういう昨日はありましたが、結局写真の上からマウスポインタを当てても、クリックして選択しても、表示はされませんでした。
(裏のセルが見えている所に当てるとできました)

やはり2000では無理みたいですね。

補足日時:2011/07/23 15:05
    • good
    • 0
この回答へのお礼

すいません。画像にハイパーリンクつけられること知らなかったので、
裏のセルにハイパーリンクつけてました。

ちゃんとできました。名前けしたら、指マークにもならないですし、ちゃんとクリックもできます。

完璧な答えだったのにお礼してあげられなくて申し訳ありませんでした。

お礼日時:2011/07/25 20:13

te12889さん案


>挿入した画像を選択した状態で「ハイパーリンクの編集」を出し、「ヒント設定」ボタンから文字列を入力..
    ~~~~~~~~~~~
Sub Macro1()
  Dim s As String
  
  With ActiveSheet
    s = .Shapes(1).TopLeftCell.Address(external:=True)
    .Hyperlinks.Add Anchor:=.Shapes(1), _
            Address:="", _
            SubAddress:=s, _
            ScreenTip:="xxx"
  End With
End Sub

xl2000sp3ではokです。
    • good
    • 0
この回答へのお礼

おぉぉ、そうかte12889さんが言っていたのはこういう事だったのか!
裏のセルじゃなくて、画像にハイパーリンクを貼り付ければよかったのかー


ずっと勘違いしていました。申し訳ありません。

しかも、ハイパーリンクのリンク先消すと、ツールチップのみ表示される・・・!!

これならいけるかも・・・
ありがとうございます。

せっかく教えてくれてなんなんですが、ベストアンサーは
原案のte12889さんに上げたいと思います。

申し訳ありません~

お礼日時:2011/07/25 20:12

一応の総括をして見ますが、覆す回答が出れば良いのですが。


VBのフォームなどではでは別です。
ーー
エクセルで、2003までは
(1)シートに貼り付けるコントロールにはToolTip的なプロパティは無い
(2)フォームの上に貼り付けるコントロールには、ControlTipTextがあるものがある(ボタン、TextBoxなど)
(3)挿入ー図ーファイルからシートに張り付くオブジェクトにはそのプロパティはない
(4)シートのセルには「コメントの挿入」で、それらしき仕組みが出来る(ちなみに)
ーー
だから
代替物を考えないといけないが、VBAの範囲では、カーソル位置の補足と、テキストボックス的図形を出す、マウスが写真表示コントロールを離れると隠すは難しい。
ーーー
http://www.moug.net/tech/exvba/0120008.htm
では、シートにImage1を貼り付け、MouseMoveイベントで、マウスがコントロールの上にあるとき、別途図形のShapeを表示して、適当な所定時間経過後消すという方法が紹介されている。
ーー
上記にある例について、下記でテストしてみた
Imageコントロールに画像(写真)を持ってくるコードは別途必要。
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'If Not MyShape Is Nothing Then Exit Sub '複数表示防止
'Shapeを描画、テキストを表示して一定時間待機後削除
With ActiveSheet
Set MyShape = .Shapes.AddShape(msoShapeRectangle, _
Image1.Left + X, _
Image1.Top + Y, _
200, 15)
End With
'Shapeにテキストを表示し、一定時間待機させた上で削除
MyShape.OLEFormat.Object.Text = "この写真はXXの写真です"
DoEvents
Application.Wait Now + TimeValue("00:00:01")
MyShape.Delete
Set MyShape = Nothing
End Sub
ーーーーーーーーーーーーー
ただしImageコントロールが写真の数だけシート上に張り付き、VBAで、VBのコントロール配列のような仕組みが無いので、どのImageでマウスムーブが起こったか、コード的に簡潔に捉えにくい(VB.NETでは出来るようになった仕組みか)こと、各Imegeと写真名などの対応をどうつけるか、難しい点があって,利用は難しいのでは。

この回答への補足

お礼をした後で補足してしまいます。申し訳ありません
ちょっと処理を軽くできないか、色々試してみてきづいたんですが、聞いてもよろしいでしょうか?

なぜか、一度目のDoEventsが反応していないのか、上の処理を一回目行っただけではまったく表示してくれません。
(マウスを一秒未満だけ動いた場合表示されません)
マウスを1秒以上ぐりぐり動かし続けて二回目の処理に突入するとなぜか表示されます。

そこで、DoEventsの所を

DoEvents
DoEvents

と二回続けて処理させるようにしたら、一回目で映るようになりました。
これは私のパソコンのスペックが足りなく処理落ちを起こしているのが原因でしょうか?

また、これの問題点として、待機処理時間中、CPUを食いすぎるという点があります。
1秒だけなら問題ないのですが、さすがに一秒だと見づらいので2秒、3秒と増やしてみたんですが、3秒で50%に到達してしまいます。
それを踏まえ表示時間を2秒に抑え、かつ、3秒間の実行を受け付けないインターバルを置く工夫をしてみました。
これよりもっと、処理を軽くすることは可能でしょうか?

以下がそのコードです
Dim a As Integer
Dim t As Long

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'If Not MyShape Is Nothing Then Exit Sub '複数表示防止
'Shapeを描画、テキストを表示して一定時間待機後削除


Debug.Print (Timer - t)
If (Timer - t) < 5 Then Exit Sub

t = Timer


Dim myshape As Shape
With ActiveSheet
Set myshape = .Shapes.AddShape(msoShapeRectangle, _
Image1.Left + X, _
Image1.Top + Y, _
200, 15)
End With
'Shapeにテキストを表示し、一定時間待機させた上で削除
myshape.OLEFormat.Object.Text = "この写真はXXの写真です"
DoEvents
DoEvents
Application.Wait Now + TimeValue("00:00:02")
myshape.Delete
Set myshape = Nothing
a=a+1
Debug.Print "a=" & a
End Sub


ちなみにテストプレイしたのは自宅のパソコンのみで
会社の方ではまだ行っていないです。
参考までに私の(自宅の)パソコンのスペックは

OS XP
CPU Core2Duo E8400 3.0GHz
グラフィックボード GeForece GT220
メモリ 2G
エクセル 2007 12.06557.5000 SP2 MSO (12.0.6554.5001)


です

補足日時:2011/07/23 19:21
    • good
    • 0
この回答へのお礼

回答ありがとうございます。ちょっと確認するのが遅れてしまいました。

これはこれで、良いんですけど、ちょっと重たい気がします。
CPU(表示させまくると50%超えるんで)

自宅のパソコンでこれなのですから、会社のパソコンで皆に使わせるのは不安が残りますねー

しかし、できないこともないことが分かったのでよかったです。
ありがとうございましたー

お礼日時:2011/07/23 17:57

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A