• ベストアンサー

「VBでExcel上PictureBoxダブルクリックイベントを取得したい」について

todo36の回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

> 僕も全く同じ処理を考えていましたのですが、実現不可能でした。 質問180648でエクスプローラのSysListView32のイベントをVBで拾う 処理は成功されているのですよね。 その手法で出来ると思ったのですが.. > With Event 私も詳しく知りたかったのですが... Chika-Fさんの質問204538より Excel上にあるPictureBoxオブジェクトを取得 Set Image1 = xlSheet.OLEObjects("Image1").Object 参考になりませんか?

TAGOSAKU7
質問者

お礼

>質問180648でエクスプローラのSysListView32のイベントをVBで拾う処理は成功されているのですよね。 >その手法で出来ると思ったのですが.. えーとですねー エクセルは正式な手続きをしないと、共有メモリを参照する以前に、共有メモリエリアを作成しただけで、落ちるみたいなのです。(EXCEL2000での実験です) しかしその正式な手続きはわかりません。その擬似手続きとしてWithEventが存在するので、それを利用するしか。。。 さらにピクチャボックスとChika-Fさんは述べられていましたが、実際にはイメージなので、オブジェクトハンドルを持たないので、別アプリからのハンドルでの操作は無理みたいなのです。 エクセル内のオブジェクトをハンドルで操作するのは、コマンドボタンを押させる事や、テキストボックスの文字列を読み取るぐらいしかできないのかなぁ・・・ イベントをプロセス監視で取得しようとすると、落ちまくりでした。 (T▽T) ← かなり泣けました。。。 M○社さんが、どこかでオフィスとVBのオブジェクトのバージョンを一緒にしてくれないと、ちょっと厳しいです。。。 (最後になりましたが、この前書き込みを見ていたのに、何も発言しないまま出張に出てしまい、申し訳ありませんでした。)

TAGOSAKU7
質問者

補足

Chika-Fさん。参考ありがとうございました。 Todoさん。これからもよろしくお願いします。 Chika-Fさんのお礼欄に書いた返答は、Todo36さんの >Set Image1 = xlSheet.OLEObjects("Image1").Object がヒントとなりました。感謝です。 それと、、、Chika-Fさん ぼくはTodoさんの師匠ではないですよ。以前に質問をここで書いて、Todoさんに教えてもらったりしています。 (密かにちょっとした言語友達気分でおります。ボソッ(-。-)) みなさん これからも よろしくです。。。

関連するQ&A

  • VBでExcel上PictureBoxダブルクリックイベントを取得したい

    VBでOpenしたExcelシート上にあるPictureBoxをダブルクリックした際に発生するイベントを取得したいと思っております。 ExcelVBAでは普通にPictureeBox_DblClick()で取得できますがVBで取得する場合はPictureBoxオブジェクトをどの様に取得・宣言し、プロシージャ名はどの様に書いたらよいのでしょうか。教えて下さい。お願いします。

  • 現在、VB2005でDrawLineにてPictureBox上にライン

    現在、VB2005でDrawLineにてPictureBox上にラインを描いています。 しかし、VB6とは違いラインを描いているFormが隠れるとラインが消えてしまいます。 PictureBoxのPaintイベントで描くようにすれば良いのでしょうが、ラインを描くのに 数万ループして演算しながら座標を決めてるため、Formが隠れて現れるたびに座標演算処理が働き 重くなり実用的ではありません。 Formが隠れてもラインが消えないように出来れば良いのですが、方法をご存知の方がいらっしゃいましたら 宜しくお願いいたします。

  • VBから、エクセルでファイルを開くには・・・

    またまた、お世話になりますm(__)m 環境はVB.net2003、エクセルは2002でプログラミングの勉強、データ処理をしているのですが、VBでエクセルを開き、そのエクセル上でファイル(csvやテキストなど)を開きたいのですが、VB上でどのように書けばよいのでしょうか? VBでエクセルをたちあげたり、bookやsheetを開くことはできました。 どなたかご教授お願いしますm(__)m

  • VBからEXCELを保存

    VBからEXCELに保存したいのですが、前準備としてEXCELのsheet2で保存します。VBを実行したときにExcelのsheet1に保存したいのですが、どうすればいいかわかりません、おしえてください。多分、保存するときにSheet2を対象にしていると思うので、sheet1を対象にしたいのですが・・・ /****************** VBを実行したときの処理 ********************/ 'アプリケーションの参照 Set xlApp = CreateObject("Excel.Application") 'ブックの参照 Set xlBook = xlApp.Workbooks.Open("C:\テスト\テスト.Xls") 'シートの参照 Set xlSheet = xlBook.Worksheets("Sheet1")

  • PictureBoxのMouseUpイベントを意識的に発生させる方法

    VB.Netで開発しています。 表記の通り、PictureBoxのMouseUpイベントを意識的に発生させる方法はありますでしょうか? 具体的な処理の流れは PictureBox1をドラッグ&ドロップすることで ドロップされた位置によって処理を行っているのですが 制限時間をタイマーで設けていて、制限時間が来たら 現在の位置でドロップ(MouseUp)したいのです。 どなたかいい方法ご存知の方いましたらアドバイスお願いします。

  • ダブルクリックイベントで良いのかどうか?

    お世話になります。 ダブルクリックイベントで、そのセルを赤く色を塗り、尚且つ、 そのセルをダブルクリックした事により、別のワークブックを開き、 また、開いたワークブックのシートの中からある単語を検索して その属性を現在アクティブにしている、ブックのシートに記入しよう としていますが、 まず、下記の様に、ダブルクリックイベントで、セルを赤く塗るまではうまくいったのですが、別のブックを開く事がうまく出来ません。 記述が悪いのか、または標準モジュールに記述するべきなのか分からなく困っています。 どなたかご教授頂きたく宜しくお願い申し上げます。        記 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Rng As Range, myRng As Range Set Rng = Range("c2:d2,f2") Set myRng = Intersect(Target, Rng) If myRng Is Nothing Then Exit Sub Rng.Interior.ColorIndex = xlColorIndexNone myRng.Interior.ColorIndex = 3 Cancel = True If Intersect(Target, Range("c2")) Then Workbooks.Open Filename:="C:\Documents and Settings\Owner\デスクトップ\台帳.xls" End If End Sub

  • EXCEL VBAから、VBのフォームを開くためには?

    EXCEL VBAからVBへプログラムを移そうと努力しています。 そこで、エクセルのシートのコマンドボタンを押すと、 VBで作成したフォームが開き、そこからEXCELの処理を させたいと考えています。 VBからエクセルの処理は Excel.Application のあたりをつかうことでなんとかなりそうなんですが その逆がわからず行き詰まっています。 EXCELは2000 VBは6.0 です ご存じの方、よろしくお願いします。

  • VB6からExcelにマクロが使われているかを知るには

    VB6でExcelファイルを読み込み、各シートにマクロが使われているかを 知る方法を探しております。(ブック単位でもよいです) Worksheetsオブジェクトのプロパティにはなさそうですし、 何か情報をお持ちの方、ご教授いただければと思います。

  • VBからエクセルファイル作成

    VBでエクセルファイルを作成する処理を作っていて、ファイルは作成されるのですが、自動的にシートが3シート作られます。 作成時にシート数を指定することはできるのでしょうか? ネットでいろいろ調べるのですが、VBからのエクセル操作について書かれているサイトがあまりみつかりません。 よいサイトがありましたら、あわせて教えてください。 よろしくお願いします。

  • VB.NETからエクセルを起動して、エクセルでVBを閉じたい。

    こんにちは。 先日、エクセルのフォームを最前面に配置したいという 質問をさせて頂いたものでございます。 それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、 最前面にする事は出来たのですが、フォームを動かすと ブックはその一つ下に現れてしまい、 ブックを最背面に配置するなどを試みてみたのですが、 どうもうまく行かないので、 エクセルから直に立ち上げることが出来ないようにして VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。 それで、データを送る方法は何とかなりそうなのですが、 VB.NETのフォームからエクセルを起動して、 次にエクセルからそのフォームを出したり、隠したりしたいのですが、 その場合、VB.NETのフォームのなんと言うハンドルを取得すればよいでしょうか? IDにも色々あるようで、どれを使えばよいのか分からなくなってしまいました。 そのIDはVBのフォームを起動した時に、エクセルと共有するiniファイルなどに、書き込んでおこうかと思っています。 よろしくお願いいたします。m(__)m