2022年10月31日月曜日

SDIは、米国防衛のスター・ウォーズ計画で、MDIは、躁うつ病 (双極性障害)と言ったりするので、ややこしい ー Graphical User Interface(Windows)

Excel2010の表示画面
    
自宅ではまだオフィス2010を使い続けていますが、機能に変わりはありません。
VBAでプログラムを組んでいる限り、2013以降と大きな差が感じられません。

ですが、最近やっと大きな違いを違いを見つけたのが、複数ブックのオープン。
冒頭の写真のように、エクセルのウインドウ内に複数のブックが表示されます。

ですが、2013以降は、エクセルのウインドウを複数開いてブックを開くのです。
この大きな違いは、略称として、MDI、SDIと呼ばれる表示方式の変更なんだ。

MDIは、”マルチドキュメントインターフェイス”ですが、SDIはシングルです。
要するに、アプリを開いたら、その中で開けるファイルの数の機能だと言う事。

初期のPCは、ハードウェアにメモリーが少なく、大量の消費は避けておきたい。
このため、複数アプリを開くよりは、一個のアプリの中で複数ファイルを開く。

Excel2013じはこんな感じ
     
この方がメモリ消費も少なくて好まれたと思いますが、メモリの価格も下落だ。
容量も、2GB、4GBと増加して気にすることもなくなったし、スワップも死語。

昔はメモリも少なくて、そこに書ききれない時は、ハードディスクに退避した。
なので、必要に応じてハードディスクから読み出しと書き出しをしていました。

だから、データ交換でスワップなのだが、世俗では夫婦交換だけが先走りとか。
それは置いておいて、ウインドウズのアクセスが急激にとろくなったりしたな。

今や、記憶媒体もSSDのICメモリだし、スワップしても高速で書かれています。
しかも、CPUの高速化で処理も早くなって、MDIの機能に留意する必要もない。

なので、今やSDIのインターフェースによるアプリが主流になったという分け。
この違いをさほど気にしていなかったのですが、VBAコードで気が付きました。

それは、二つのブックを開いて、片方を最小化し、別のは最大化するコードだ。
MDIインターフェースではブック名を指定すればできましたが、SDIは違った。

それは、アクティブなウインドウを最大・最小にするコードに代わったのです。
要するに、開いたブックをアクティブにしてから、最大化最小化に移るのです。

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim wb As Workbook
  Application.WindowState = xlMinimized  '最小化
    For Each wb In Workbooks
      If Left(wb.Name, 8) = "HOGEHOGE" Then
        wb.Activate  '最大化したいブックをアクティブにする
        Application.WindowState = xlMaximized  '最大化
      End If
    Next wb
End Sub

このコードはブックを閉じる時に実行しますが、初めにブックを最小化します。
次に、開いたブックをループ処理から判定して、最小化のブックを最大化する。

この作業が終わると、開いていたブックは終了して閉じ、別のブックが最大化。
というわけで、ブックの操作を切り替えしていくような見せかけができるんだ。

実を言うと、最初に開いたブックにデータシートがあって、そのシートを別のブックに書き出して処理をして、それが終わったら閉じて、データのあるブックに戻って最大化するコードを書いているところでして、MDIでもSDIでもやりようはあるものだと思ったのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿