Excel2013以降はどう変わったか

Windows8と同様にタブレット対応でしょうか....
Office2013」以降しか知らない方には解らないと思いますが...   Officeが「MDI(MultiDocumentInterface)」から「SDI(SingleDocumentInterface)」に移行したということの説明です。
ネットで「Office MDI SDI」などで検索してみても、この前後のバージョンを良く知る方の記事は「酷評」ばかりです。
タブレットモードや他OSとの動作統一などによるものと想像しますが、 複数ブックを開いた時にそれぞれのウィンドウで異なるリボンタブを選択した状態を保持できると言われても、 作成済みブックで作業する時にはリボンを触ることは少ないわけでベテランの方は画面上で幅を取るリボンはたたんで利用されていることも多いのです。



いまさら「MDI(MultiDocumentInterface)」に戻すことはないのでしょうが、 「SDI(SingleDocumentInterface)」では複数開かれたブックが同一インスタンスかどうかも判りにくく、 デスクトップを基調とするWindowsユーザーにとってメリットがあるとは思えませんでした。 開いたどれかのブックを閉じるのか、Excel全部を閉じるのかの作業判断も判りにくいです。



一方、スマートフォンが原点の若い人はそもそもWindowsにも同等の理解しかしておらず、例えばメールの作成ウィンドウも最大化で使っていたりします。 だからマイクロソフトも既存ユーザーを無視して「タブレットモード」へ走るのかと思ったりもしましたが、 最近のマイクロソフトの動向を見ると、既存ユーザーや既存システムに対する配慮も見られるようになりました。
上記のような若い人たちにはベテランの方がWindowsの「s」の意味や利点を教えていかないといけないと思います。
モノの呼び名がよく変わります....   例えばOffice2016の途中から(「途中から」というのは初版ではなくアップデートの途中からだからです)、 それまで「セキュリティセンター」と呼んでいたものが「トラストセンター」に名称変更されました。
この他にもファイル保存形式の「CSVカンマ区切り」がOffice2016から「CSVコンマ区切り」に変わったりしています。



新機能なら良いのですが、古くからある既存機能の名称が変わってしまうので、当方のような解説をやっている側では当惑します。 どうも変更時点のバージョンの新機能説明のページを見ても説明がされていないようです。



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のウィンドウとワークブックのウィンドウが同一であるため、これらのウィンドウ操作は何の作用も行なわれないようです。