- ベストアンサー
ExcelVBA 起動しているブック数を取得したい
ExcelVBAで、現在起動しているブック数を数えたいと思い下記コードを書きました。 eCnt = Workbooks.Count ですが、スタートボタン→プログラム→MicrosoftOffice→Excelというように Excelを起動していった場合、アプリケーションウィンドウが何個も起動し、 Workbooks.Countでは起動している数を取得できませんでした。 このような場合、どうすれば起動ブック数を取得できますでしょうか? ご存知の方いらっしゃいましたら教えてください! WinXP SP3、Excel2003 SP3を使用しています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ExcelVBAは,自分エクセルの中のことしか操作できませんので,通常「他のエクセル」の事は知るよしもありませんし,操作する(「ブックの数を調べる」のような)事もできません。 余談としてご紹介するなら,たとえば次のような例があります http://officetanaka.net/excel/vba/tips/tips61.htm 資料にもさらっと触れられていますが,どうしても踏み込みたいなら通常はWindowsAPIなどでデータを取得したりします。
その他の回答 (1)
- kawai985
- ベストアンサー率68% (17/25)
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200809/08090125.txt 情報を見ましたが未検証です 参考まで 複数起動でブック数を把握しなければならない状況というのは どんな理由からでしょうか よければ詳しく教えてください
お礼
ご紹介頂いたページの中にやりたいことが実現できるコードがありました。自分でも勉強しながら使わせて頂きたいと思います。本当にどうもありがとうございました。
補足
早々に回答をありがとうございました! お礼が大変遅くなり申し訳ありません!! (実はインフルエンザで休んでいまして・・・スミマセン ><) APIはネットのコードを切り貼りして使ったことしかなく、今回ご紹介頂いたページは大変勉強になります。ありがとうございます。 複数起動でブックが開く状況は、私のPCではほとんど無く、ユーザーさんのところで起こる現象です。 ユーザーさんは、ブック起動と共に計算方法を「自動・手動」と切り替えるツールバーを表示するマクロを使っています(ネットで紹介されていたマクロです)。 マクロではExcelを終了する時に、追加したツールバーをDeleteしているのですが、複数起動でブックが開いている状態で1つExcelを終了すると、ツールバーがDeleteされ、2個目のExcelを終了する時に、ツールバーが存在しないために実行時エラーが出てしまいます。 (とりあえずOn Error Resume Nextで実行時エラーは出ない状態にしてあります) そのため、開いているブックを全て取得して、ループでツールバーを表示したり、Deleteしたりしようと考えました(もっといい方法があるとは思うのですが・・・ない頭でこのように考えまして・・・)。 それで質問させて頂いた次第です。 とにかく書き込みが遅くなり、申し訳ありませんでした。
お礼
早々に回答をありがとうございました! お礼が大変遅くなり申し訳ありません!! (実はインフルエンザで休んでいまして・・・スミマセン ><) 紹介頂いたWordのTasksコレクション、試してみました。 別インスタンスで開いていたExcelが全て取得でき、こんなのもあるのかーと勉強になりました。 この方法もやってみて、不具合等確認したいと思います。 どうもどうもありがとうございました!