• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETからエクセルを起動して、エクセルでVBを閉じたい。)

VB.NETでエクセルを起動して、連携する方法について

このQ&Aのポイント
  • VB.NETのフォームからエクセルを起動し、エクセルと連携する方法を知りたいです。エクセルの最前面にフォームを配置することはできましたが、ブックが一つ下に表示されてしまいます。VB.NETのフォームのハンドルを取得して、エクセルの操作を行いたいです。
  • VB.NETのフォームからエクセルを起動し、エクセルとの連携方法について教えてください。フォームを最前面に表示することはできましたが、ブックがフォームの下に表示されてしまいます。VB.NETのフォームのハンドルを取得する方法が分かりません。
  • VB.NETのフォームからエクセルを起動し、エクセルとの連携を行いたいです。フォームを最前面に表示することはできましたが、ブックがフォームの下に表示されてしまいます。VB.NETのフォームのハンドルを取得して、エクセルの操作を行いたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まず ・Excelのバージョン ・.NETのバージョン(2005でしたっけ?) を教えてください。 Excelのユーザフォームを開くときに、エクセル本体を最小化でもよいですか?

popopompom
質問者

お礼

補足の補足が必要になってしまい申し訳ございません。 エクセルのユーザーフォームを開く時にエクセル本体を最小化しても良いかという点ですが、 エクセル本体は通常通りの表示になれば良いと思っています。 流れとしては、 1、VB.NETのプログラムを起動、 2、自分のウィンドウハンドルをiniファイルに記録、 3、自分を不可視状態にする。 4、エクセルの既存のブックを開く 5、エクセルのユーザーフォームのボタンを押すと   VBのフォームが表示・非表示になる。 エクセルVBAの時もSetWindowPosが思うように 動いていないようでしたので、 何か別のところで間違っているか、基本的な勘違いをしているのではないかと思いはじめました。 また引き続き試行錯誤してみたいと思います。 何か間違っている点など、お気づきのことがありましたら、 ご回答頂けると幸いです。m(__)m

popopompom
質問者

補足

基本的な情報が抜けておりました。 ご指摘くださって、ありがとうございます。 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

関連するQ&A

専門家に質問してみよう