自宅ではまだオフィス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 件のコメント:
コメントを投稿