[[20170706154651]] 『VBAで画像をポップアップしたい』(ろでっち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで画像をポップアップしたい』(ろでっち)

すいません、こちらにいらっしゃる方々には非常に初歩的でな質問かもしれませんが、私では解決できなかったのでこちらで書き込みさせていただきました。
やりたいことは、特定のパスにある画像ファイルを、マクロを登録したボタンを押すとポップアップしたいと考えています。
ユーザーフォームと標準モジュールを組み合わせてやれば行けるのかなと思い、考えていたのですが・・・
例として
Range("A1")に
c:\test.jpg
と書かれているとします
sub test
  dim ユーザーフォームに渡す変数
  ユーザーフォームに渡す変数 = Range("A1")

    userform1.show
end sub
sub 
    Private Sub UserForm_Initialize()    
    Image1.Picture = LoadPicture(「ここを標準モジュールから渡された変数(Range("A1"))にしたい」)
  End Sub
こういったことができないかを悩んでいます。 
こういうやり方ではなく、標準モジュールだけでも画像のポップアップができるという方法でも構いません。 
どなたかご教授をお願い申し上げます。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 標準モジュールで変数をPublic変数として宣言してはいかがでしょう?
(カリーニン) 2017/07/06(木) 16:07

 参考HPです。

http://officetanaka.net/excel/vba/variable/05.htm
(カリーニン) 2017/07/06(木) 16:10


ユーザーフォームに値を渡す、という逆の考えで、ユーザーフォームのコードの中から、特定シートの特定セルに何が書かれているか見る、という手もありますね。
(???) 2017/07/06(木) 17:41

 ポップアップというのが具体的にどのようなことを示しているのかわかりませんが、
 直接画像ファイルを既定のアプリケーションで表示する、という方法もあります。

 CreateObject("Shell.Application").ShellExecute "画像パス"

 ※画像パスは変数なりセルの値なりを指定してください。

 単に画像を見たいだけであれば、ユーザーフォームに表示する必要はありません。
(カリーニン) 2017/07/06(木) 18:05

 >ユーザーフォームに渡す
 っていう方向性で行くんなら、
 ユーザーフォーム側にプロパティを作ってあげるのが
 ニュアンス的な意味で「しっくりくる」のではないかと思います

	Rem UserForm1モジュール
	Private myImgPath As String

	Public Property Let ImgPath(newPath As String)
	    myImgPath = newPath
	    Image1.Picture = LoadPicture(myImgPath)
	End Property

	Rem 標準モジュール
	Sub test()
	    UserForm1.ImgPath  = Range("A1")
	    UserForm1.Show
	End Sub

(白茶) 2017/07/06(木) 19:54


コメントいただいた皆様、どうもありがとうございます!
とりあえず、明日会社で(おぃ)分からないコードを調べつつ試してみます。

ただ、今カリーニン様の提示していただいた

CreateObject("Shell.Application").ShellExecut

の意味がよくわかりませんでした(色々調べてみたのですが、もやもや状態です)。
とにもかくにも初心者なので、このコードが何を意味するのかを教えていただければ幸いです。
とりあえず、既定のプログラムで対象ファイルを開くということは理解できましたが・・・。

(白茶様の提示していただいたコードは明日ゆっくり調べてみようと思います)

(ろでっち) 2017/07/07(金) 02:13


ども^^

>やりたいことは、特定のパスにある画像ファイルを、
>マクロを登録したボタンを押すとポップアップしたいと考えています。

マクロを使わなくてもハイパーリンクでファイルを開く
っていうのはだめですか?
(まっつわん) 2017/07/07(金) 08:23


 参考HPです。

https://tonari-it.com/excel-vba-open-file-shell-application/

 私は、VBAでMS Office関係のファイル以外を起動するときに使用しています。

 皆さんも書かれてますが、また、私も先のレスで
 >ポップアップというのが具体的にどのようなことを示しているのかわかりませんが、
 と書いてますが(これへの回答はまだいただいてませんが)、場合によってはマクロ
 は不要です。目的によっては、マクロでやるにせよ、別の提案があるかもしれません。
(カリーニン) 2017/07/07(金) 08:43

>カリーニン様
 >ポップアップというのが具体的にどのようなことを示しているのかわかりませんが

すいません、失礼いたしました。
具体的には
 
   A 

 1  2-1 ボタン

このような感じで
ボタンを押すと、「2-1」に対応したJPGファイルの画像がパッとポップアップ表示されるようにしたいのです。
この状態で、A1を「2-2」に変更して、再度ボタンを押すとすると、今度は2-2に対応する画像がポップアップで表示されるされるようにしたい。

これがやりたいことです。
(ろでっち) 2017/07/07(金) 09:36


>まっつわん様
実はそれも考えて試したんですが、先に書いた「2-1」「2-2」というのはドロップダウンリストになっていまして、ハイパーリンクにするとこれが無効になってしまったため断念した経緯がります><
(ろでっち) 2017/07/07(金) 09:56

ドロップダウンリストのせるとハイパーリンクのセルを分けたら
ドロップダウンリストで選択したファイルにたいしてハイパー
リンクを設定するというのは可能です。
(カリーニン) 2017/07/07(金) 10:23

参考過去ログです。

[[20160223221106]] 『ドロップダウンリストからのハイパーリンク』(サクラメント)
(カリーニン) 2017/07/07(金) 13:09


>ボタンを押すと、「2-1」に対応したJPGファイルの画像がパッと
>ポップアップ表示されるようにしたいのです。

1)2-1に対応するファイルのフルパスはどこに保存されてますか?

2)ポップアップを連呼されてますが他の言葉での表現は可能ですか?
(何となくイメージは解るのですが、数種類あるであろう画像の表示方法に対して、
どれが良くてどれがだめかが解らない)

例)
エクセルとは別に画像ファイルを開く
シート上に画像を挿入
自作のダイアログボックスを出現させてそこに表示
etc....

3)画像が見れたらその後どうする?
2に関連ですが、その画像を見ながらエクセルで作業を続ける?
出てきた画像は、割と自由にドラッグで、画面上を移動できたりしたい。

参考になりそうな画面イメージがどこかネット上に落ちてないですかね・・・・?

(まっつわん) 2017/07/07(金) 15:21


あぁ、最初の方よく読んでなかったですm(_ _)m

ユーザーフォームが第一希望なのですね。

ならば、選んだ文字列に対応するフルパスをどこかに置いておかなければですね。

でも、なんでドロップダウンリストなのだろう。。。

シート上にリスト形式で書いて置けば隣にフルパスを書いておけますよね?

(まっつわん) 2017/07/07(金) 15:35


>まっつわん様
こんばんわ、ろでますです。
ご返信遅くなって大変失礼ございません。
ユーザーフォームを第一希望というわけではなくボタンを押すと、「ユーザーフォームと同じように」画像のウィンドが表示されるというのが希望です。
長々とごちゃごちゃレスしたので、まとめるとこういう言い方になります。

特にドラッグアンドドロップの必要性はなく、あくまで表示さるだけです。
そして、その画像を見続けながら作業するかどうかは考慮中でした。

このレス内の意見を参考にさせていただき、一番しっくりくるのはカリーニン様のご提示いただきました。
CreateObject("Shell.Application").ShellExecute "画像パス"
が、最も効率的(楽おぃ)でした。

ハイパーリンクの方法も、参考URLの方を拝見させていただき、とても勉強になりました。

ひとまずは、解決ということです。
どうもありがとうございました!m(_ _)m
(ろでっち) 2017/07/08(土) 01:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.