[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
ポップアップというのが具体的にどのようなことを示しているのかわかりませんが、 直接画像ファイルを既定のアプリケーションで表示する、という方法もあります。
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
[[20160223221106]] 『ドロップダウンリストからのハイパーリンク』(サクラメント)
(カリーニン) 2017/07/07(金) 13:09
1)2-1に対応するファイルのフルパスはどこに保存されてますか?
2)ポップアップを連呼されてますが他の言葉での表現は可能ですか?
(何となくイメージは解るのですが、数種類あるであろう画像の表示方法に対して、
どれが良くてどれがだめかが解らない)
例)
エクセルとは別に画像ファイルを開く
シート上に画像を挿入
自作のダイアログボックスを出現させてそこに表示
etc....
3)画像が見れたらその後どうする?
2に関連ですが、その画像を見ながらエクセルで作業を続ける?
出てきた画像は、割と自由にドラッグで、画面上を移動できたりしたい。
参考になりそうな画面イメージがどこかネット上に落ちてないですかね・・・・?
(まっつわん) 2017/07/07(金) 15:21
ユーザーフォームが第一希望なのですね。
ならば、選んだ文字列に対応するフルパスをどこかに置いておかなければですね。
でも、なんでドロップダウンリストなのだろう。。。
シート上にリスト形式で書いて置けば隣にフルパスを書いておけますよね?
(まっつわん) 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.