@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Excelウィンドウの判別方法について

1
投稿者投稿内容
まめ
会議室デビュー日: 2006/03/02
投稿数: 8
投稿日時: 2009-03-06 01:20
Excelをスタートメニューから起動すると新規のBook1がある状態で起動しますよね。
ただそのBook1のウィンドウは最大化されている場合と、そうでない場合があります。
それは最後にExcelを正常終了したときの状態に依るものであることはわかってます。

そして最大化されているときはExcel自体のタイトルバーに「Book1 - Microsoft Excel」とでますが、そうでないときは「Microsoft Excel」としか表示されません。
また本当にBookのない状態(全てのブックを閉じた状態)のExcel自体のタイトルバーには「Microsoft Excel」としか表示されません

ここで伺いたいのですがどのようにすれば同じタイトルバーのExcelでBookを保持しているかいないのかを区別することができますか?
できればExcelVBAで実現したいのですがWin32APIを駆使しても構いません。

わかりにくい質問ですが、よろしくお願いします。

#Spy++でみてると子ウィンドウをさがせばできそうですがEnumWindowEx()関数ではできませんでした。やり方が悪いのかもしれませんが。

環境は Office 2003 Pro SP3 + Windows Xp SP2 です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-03-06 07:33
Excel VBA で実現したいとのことですが、その VBA は、どこに保存しますか?

Workbooks 見ればわかりそうですけどね。
まめ
会議室デビュー日: 2006/03/02
投稿数: 8
投稿日時: 2009-03-06 08:04
返答ありがとうございます

補足ですが 別プロセスのExcelからです

よろしくお願いします

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-03-06 12:39
引用:

まめさんの書き込み (2009-03-06 08:04) より:

そして最大化されているときはExcel自体のタイトルバーに「Book1 - Microsoft Excel」とでますが、そうでないときは「Microsoft Excel」としか表示されません。


MDI 子ウィンドウがあるせいですね (複数表示されるので)。

引用:

補足ですが 別プロセスのExcelからです


すでに書かれているとおり Application.Workbooks に Workbook が入っているかどうかを確認すれば良いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まめ
会議室デビュー日: 2006/03/02
投稿数: 8
投稿日時: 2009-03-07 00:47
返信ありがうございます。

では そのApplicationオブジェクトはどのように取得すれば良いのでしょうか?

クラス名とウィンドウハンドルからプロセスIDとかは取得できますので、それらのみを使用してできますか?

同一プロセスのExcelであればWorkBookオブジェクトとかの参照ですみますけれど。

もしかして、投稿する会議室が間違っているのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-03-08 03:13
引用:

まめさんの書き込み (2009-03-07 00:47) より:

では そのApplicationオブジェクトはどのように取得すれば良いのでしょうか?


たとえば GetObject メソッドで起動中の Excel.Application のインスタンスは取得できます (起動中でない場合は失敗する)。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)