- - PR -
Excelウィンドウの判別方法について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 です。 | ||||||||
|
投稿日時: 2009-03-06 07:33
Excel VBA で実現したいとのことですが、その VBA は、どこに保存しますか?
Workbooks 見ればわかりそうですけどね。 | ||||||||
|
投稿日時: 2009-03-06 08:04
返答ありがとうございます補足ですが 別プロセスのExcelからです よろしくお願いします | ||||||||
|
投稿日時: 2009-03-06 12:39
MDI 子ウィンドウがあるせいですね (複数表示されるので)。
すでに書かれているとおり Application.Workbooks に Workbook が入っているかどうかを確認すれば良いです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2009-03-07 00:47
返信ありがうございます。
では そのApplicationオブジェクトはどのように取得すれば良いのでしょうか? クラス名とウィンドウハンドルからプロセスIDとかは取得できますので、それらのみを使用してできますか? 同一プロセスのExcelであればWorkBookオブジェクトとかの参照ですみますけれど。 もしかして、投稿する会議室が間違っているのでしょうか? | ||||||||
|
投稿日時: 2009-03-08 03:13
たとえば GetObject メソッドで起動中の Excel.Application のインスタンスは取得できます (起動中でない場合は失敗する)。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1