Excel2013,2016はどう変わったか

Windows8と同様にタブレット対応でしょうか....
Office2013」がリリースされました。  デスクトップユーザーの方ではWindows8を「敬遠」されている方が多いようで、私の所属する会社もWindowsXPの終息作業としての移行先はWindows8ではなくWindows7を選択しています。
同様なことがMicrosoft Officeにも言えていて、Office2013のリリース以降も新規のPCなのにOffice2010をインスト−ルしているという実態があります。
マイクロソフトという会社は一旦「タブレット」に舵を切ると既存ユーザーをかなぐり捨てたような製品を押しつけてくるという印象を世界中のユーザーが持ってしまっているのだと思います。

私も十数年WindowsOfficeにつきあってきていて、近年では新しいバージョンがリリースされても自分の使い方の上でメリットが感じられないだけでなく、昨今のマイクロソフトの動向がおもしろくないのは事実です。
ですが、Windows8は発売当初から使用しています。スタートメニューの問題を除けばWindows7と比べて細かいことですが改善された点が多数ありますから。スタートメニューのことや、ログイン後にメトロに行かずにデスクトップに入るなどはフリーソフトでもできることです。
この後、「Office 2016」もリリースされていますが「Office 2013」とあまり代わり映えしない内容のようです。
SDI(SingleDocumentInterface)になってしまいました。
まず「おさらい」です。Microsoft Office は黎明期から2010までは全て「MDI(MultiDocumentInterface)」でした。 「MDI(MultiDocumentInterface)」というのは、Windows上ではExcelのウィンドウは1つだけですが、そのExcelのウィンドウの中に複数のドキュメントを開くことができる構造のユーザーインタフェースを指します。

Excel2010の画面

まず、これはExcel2010で新規作成を2回行なった状態です。
Book1」「Book2」はデスクトップの「Microsoft Excel」のウィンドウ内にMDI(MultiDocumentInterface)で表示されています。
閉じる[×]ボタンは外側の「Microsoft Excel」のウィンドウの他に内側の「Book1」「Book2」にもあるので、全体を閉じたいのか、Book1だけを閉じたいのか明確に作業できます。

ここから先はExcel2013の画像になります。

Excel2013の画面

同じことをExcel2013で行なうとこのようになります。
Book1」「Book2」はデスクトップ上で既に別々のウィンドウとなって表示されてしまいます。
一般ユーザーでは小さいスクリーンで運用していることが多く、何でも「最大化」で表示させているということだとこの違いがよく判らないのかも知れません。 「マルチ」が「シングル」になるというのは何か「後退的」な感じがするのではないでしょうか。 元々、スクリーン上に複数のウィンドウを同時に開くことができるという意味で「Windows」と命名されたものだと記憶していましたが、昨今のマイクロソフトの対応は「Windows」の名前、あるは複数形の「s」を捨てようとしているのでしょうか。
なぜ「SDI(SingleDocumentInterface)」にする必要があったのかですが、おそらくタブレットでは「MDI(MultiDocumentInterface)」のままでは実行できないのでしょう。 先にコラムに書いたことですが「どうして従来モードを残さないのだろう」「どうして従来インタフェースを平気で切り捨てられるのだろう」という疑問がついて回ります。

Excel2013の画面

ですが、このようにタスクマネージャの「プロセス」で見ると「EXCEL.EXE」は1行しかないので同一(単一)のインスタンスであることが判ります。

Excel2013の画面

Excelの中で見ても、「ウィンドウの切り替え」に「Book1」「Book2」の両方が表示されるので同一のインスタンスであることが判ります。
整列で並べて表示を行なうとデスクトップ上で最大化されて並びます。

手操作では別インスタンスでブックを開くことはできないようで、タスクマネージャで状態を見ながらまず1つのブックを開き、次にスタートメニューから別に「Excel2013」を起動させると、一時的に「EXCEL.EXE」は2行表示されますが、すぐに1行に戻ります。この時点で「表示」タブの「ウィンドウの切り替え」を見るとそれぞれのウィンドウがプルダウンに現われるので同一インスタンスで扱える状態だと判ります。

閉じる操作については、単純にはExcel全体を一気に閉じるということができなくなりました。「Book1」「Book2」等の全てのウィンドウを閉じることでExcelそのものも閉じられるようです。 複数のワークブックを開いている状態から一気にすべてのウィンドウを閉じる場合は、シフトキーを押しながら閉じる[×]ボタンをクリックすれば良いということです。

SDIになったことでの一番の問題はVBAの話になりますが、ユーザーフォームを表示させたままで別のワークブックを開くような仕組みで発生します。
モーダルで表示されたユーザーフォームのVBAのコードによって別のワークブックを開く場合は、Excel2010までであればユーザーフォームが手前に表示されるため、後ろにあるExcelのウィンドウ内に後から開いたワークブックがアクティブになって表示されますが、Excel2013の場合は開いたワークブックが手前に来てしまい、ユーザーフォームはその後ろに隠れてしまいます。
ユーザーフォームを表示させたままで別のワークブックを開くのではなく、ユーザーフォームを起動させている元のプロシージャに制御を戻して(ユーザーフォームはHideで閉じる)から別のワークブックを開いて再度ユーザーフォームを表示させ直すという操作で回避はできますが、それでも再度ユーザーフォームを表示させた段階ではユーザーフォームが所属しているワークブックがアクティブになってしまいます。
通常であればワークブック参照のオブジェクトに対してActivateメソッドでウィンドウの前後が入れ替わってくれますが、モーダルで表示されたユーザーフォームが手前に表示されている状態では後ろで表示されている複数のExcelウィンドウに対してActivateメソッドを発行しても実際の順位は入れ替わりません。

このほか、従来であればExcelのウィンドウ内にあるワークブックのウィンドウを最小化、最大化できたわけですが、SDIではExcelのウィンドウとワークブックのウィンドウが同一であるため、これらのウィンドウ操作は何の作用も行なわれないようです。