開いていたブックが分からない

Excelでの作業を行う場合に、複数のブックを開いて作業することがあります。編集するブックは1つだけど、参考にするブックが複数あったり、とかのように、編集用と参照用が分かれることがよくあります。

そのような作業をしているときに、以下のような状況でどうしてもすぐにブックを閉じないといけなくなる場合があります。

  • Excelの調子が悪くなりExcelの再起動をしたい場合
  • 開いているブックがサーバにあるため他の人が編集したいと言っている場合
  • PCの再起動が必要になった場合
  • 別の作業が入ってしばらくExcelの作業ができない場合

一度閉じてしまうので、再度見たい場合には開きなおす必要があるのですが、前回開いていたブックの数が多いと、再度開くときにどれを開いていたのか探すのが面倒ですし、そもそも開いていたことを忘れていることもあります。

また、ファイルサーバに保存されているブックの場合では、フォルダがあちこちに分かれているのはよくあります。使ったのが直前であれば「最近使ったアイテム」の一覧から探すこともできますが、これが何日も前だったり開くブックの数が多数だったりすると、一覧には残っていないことがあります。

そのような場合に、今開いている全てのブックのフルパスを取得しておくと、あとで開きなおすブックがどれなのかを分かるため大変便利ですし、探す手間も省けます。

以下で、開いている全てのブックのパスを取得するコードを紹介します。

開いている全てのブックのパスを取得する

以下のSaveBookList関数を実行すると、現在開いている全てのブックのパスを新しいブックに保存します。保存先はデスクトップです。ブック名には日時が付けられます。

関数が2つありますが、2つ目のGetBookList関数は開いているブックのパスを取得して配列に格納する関数で、1つ目の関数は配列に格納されたブックのパスを新規ブックに書き込んで保存する関数です。

配列に保存されたブックのパスは、新規ブックのA1セルから、A2セル、A3セル、と下に向かって書き込みます。

実行結果

実行するとデスクトップに「Booklist-YYYYMMDD-HHMMSS.xlsx」のファイルが保存されます。

上記の関数で保存されたブックには、開いていた全てのブックのパスが含まれます。

そのため、個人用マクロブック(PERSONAL.XLSB)を利用している場合はそのパスも含まれます。未保存のブックにはパスが無いので、Book1などのような名前だけが書き込まれます。