こんにちは。
先日、エクセルのフォームを最前面に配置したいという
質問をさせて頂いたものでございます。
それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、
最前面にする事は出来たのですが、フォームを動かすと
ブックはその一つ下に現れてしまい、
ブックを最背面に配置するなどを試みてみたのですが、
どうもうまく行かないので、
エクセルから直に立ち上げることが出来ないようにして
VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。
それで、データを送る方法は何とかなりそうなのですが、
VB.NETのフォームからエクセルを起動して、
次にエクセルからそのフォームを出したり、隠したりしたいのですが、
その場合、VB.NETのフォームのなんと言うハンドルを取得すればよいでしょうか?
IDにも色々あるようで、どれを使えばよいのか分からなくなってしまいました。
そのIDはVBのフォームを起動した時に、エクセルと共有するiniファイルなどに、書き込んでおこうかと思っています。
よろしくお願いいたします。m(__)m
No.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
補足の補足が必要になってしまい申し訳ございません。
エクセルのユーザーフォームを開く時にエクセル本体を最小化しても良いかという点ですが、
エクセル本体は通常通りの表示になれば良いと思っています。
流れとしては、
1、VB.NETのプログラムを起動、
2、自分のウィンドウハンドルをiniファイルに記録、
3、自分を不可視状態にする。
4、エクセルの既存のブックを開く
5、エクセルのユーザーフォームのボタンを押すと
VBのフォームが表示・非表示になる。
エクセルVBAの時もSetWindowPosが思うように
動いていないようでしたので、
何か別のところで間違っているか、基本的な勘違いをしているのではないかと思いはじめました。
また引き続き試行錯誤してみたいと思います。
何か間違っている点など、お気づきのことがありましたら、
ご回答頂けると幸いです。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
- Excel(エクセル) エクセル会員名簿について。 Yahooメールの連絡先で、AさんCさんにチェックをつけて別のグループに 2 2023/03/27 20:33
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- その他(ソフトウェア) Googleフォーム、効率的な入れ方 2 2022/10/03 22:44
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) 別インスタンスのエクセルを制御したい 1 2023/05/10 02:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
サブフォームのイベント取得
-
Googleフォーム・複数人の申し...
-
リストボックスの選択解除
-
ExcelVBAでフォーム内でブック...
-
サブフォームの行ごとにコンボ...
-
VB.net(VB)で、フォームにExcel...
-
Accessでフォームから別フォー...
-
メインフォームからサブフォー...
-
C# 別なフォームへ値を渡す (...
-
VBプログラムの終了
-
C# マルチディスプレイにて、...
-
サブフォームの新規レコードに...
-
同一のフォームを複数開いて
-
Access 無操作の場合、自動で閉...
-
VB.NET 親フォームから子フォー...
-
ユーザーフォーム上にアイコン...
-
タブコントロールを含んだフォ...
-
ASP.NETとC#でWebフォームを呼...
-
アクセスでフォームで入力 複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VB.net(VB)で、フォームにExcel...
-
Accessでフォームから別フォー...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
アクセスVBA フォームのス...
-
VBプログラムの終了
-
アクセス フォームが存在する...
-
サブフォームの新規レコードに...
-
サブフォームの行ごとにコンボ...
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
メッセージボックスの背景色
-
PDFフォーム内で日付計算したい...
-
VBA リストボックスをダブルク...
-
Access 無操作の場合、自動で閉...
-
ディスプレイ解像度より大きな...
-
フォーム上の全てのコントロー...
-
ToolStripStatusLabelを固定し...
おすすめ情報