Excel2010でブックのウィンドウ位置がずれていく問題

最近気づいたんですけど、Excel2013以降で保存したファイルをExcel2010で開いて、(Excel本体ではなく)ブックの最大化を解除すると右に移動してるんですよ。
つまり、この状態のブックを保存して、

一度Excel2013以降で開いて、上書きして、それをもう一度Excel2010で開くと、ちょっと右にずれる。
いや、なんでや…。

Excel本体ならともかく、ブックの最大化を解除するなんて滅多にしないもんだから、半年間気づかずにいたらブックがはるか彼方に吹っ飛んでタヨ。
パッと見、何事だって感じダヨ。

Excel2010まではこのブックの位置はファイルごとに保存されているんだけど、最大化してるorしていないは、直近開いていたExcelファイルを閉じるときに最大化していたかどうかに依存されるっぽい。
Excel2013以降はブックの位置はファイルごとではなく、直近開いていたExcelファイルに依存するので、そのへんの違いからこういうことになるのかな?

対策

Excel2010なんて使うのやめよう

2020/10/13にはMicrosoftのサポート切れるしね?そうしよう?

VBAで起動時に調整する

Excel2010では赤枠のExcel本体がApplication、青枠のWorkbookがActiveWindowです。
Excel本体のみでWorkbookが1つもないときはActiveWindow = Nothingなので注意。
で、ActiveWindowのTop/Leftは赤枠内の座標を返します。

Excel2013以降ではApplication = ActiveWindowと見て良いみたい。
複数ファイルを開いて全部サイズを変更したとしても、
ApplicationのTop/Left/Width/Heightは現在ActiveなブックのTop/Left/Width/Heightを返し、ActiveWindowのTop/Leftはディスプレイ内の座標を返します。
つまり恒久対応するなら起動時とWorkbook_WindowResizeイベントハンドラで

  • Excel2010以下の環境か判定
  • ActiveWindow.WindowStateがxlNormalか(xlMaximizedだと座標変更するとき例外が発生するので)
  • ActiveWindow.Top/LeftがApplication.Height/Widhtを超えてないか

をチェックしてActiveWindow.Top/Leftを補正してあげないといけないってことなのかな。

返信を残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)