アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

まず


・Excelのバージョン
・.NETのバージョン(2005でしたっけ?)
を教えてください。

Excelのユーザフォームを開くときに、エクセル本体を最小化でもよいですか?

この回答への補足

基本的な情報が抜けておりました。
ご指摘くださって、ありがとうございます。

OSはWindows XPで
エクセルはEXCEL 2002 SP-1で
VB.NETはMicrosoft Visual Basic .NET 69516-335-0000007-18389
というものになります。

あと、試行錯誤してみた結果、FindWindowExというAPIで6桁の数字が取得出来まして、
これを使って試しに電卓を対象にして
SetWindowPos(FindWinEx, -1, 0, 0, 0, 0, a or b)
(aには&H1 bには&H2が入っています)
を実行したら、ウィンドウの状態に変化が見られたのですが、
電卓の右が欠けてしまい、100*270(ピクセル)位の大きさになってしまい、
対象がエクセルの場合は位置がデスクトップの左上で大きさが200*40(ピクセル)位になってしまいました。
Zオーダーは通常と変化がないようで、後から表示したウィンドウに隠れてしまいます。
TopMost = TrueやFalseと同じ操作をしたいのですが、
訂正箇所や方法をご教示頂けたら助かります。
よろしくお願いいたします。m(__)m

補足日時:2006/05/20 00:25
    • good
    • 0
この回答へのお礼

補足の補足が必要になってしまい申し訳ございません。
エクセルのユーザーフォームを開く時にエクセル本体を最小化しても良いかという点ですが、
エクセル本体は通常通りの表示になれば良いと思っています。

流れとしては、
1、VB.NETのプログラムを起動、
2、自分のウィンドウハンドルをiniファイルに記録、
3、自分を不可視状態にする。
4、エクセルの既存のブックを開く
5、エクセルのユーザーフォームのボタンを押すと
  VBのフォームが表示・非表示になる。

エクセルVBAの時もSetWindowPosが思うように
動いていないようでしたので、
何か別のところで間違っているか、基本的な勘違いをしているのではないかと思いはじめました。

また引き続き試行錯誤してみたいと思います。
何か間違っている点など、お気づきのことがありましたら、
ご回答頂けると幸いです。m(__)m

お礼日時:2006/05/20 02:06

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