【VBA】同ウィンドウをコピーして開く/ウィンドウを並べて表示する

これで楽に!?VBA活用

こんにちは、Ryoです。
同じブック内で違う箇所の比較を行いたい場合に便利な同ウィンドウをコピーして開くNewWindowメソッド、異なるブック間でデータ確認等の際にウィンドウを並べてスクロールを同期できるCompareSideBySideWithメソッドについて書いていきます。

スポンサーリンク

1.サンプル概要

◆同じウィンドウをコピーして開く

サンプルコードで特に表自体に何か処理を行う訳ではありませんが、見栄え的に以下の表を作成しています。

現在のアクティブブックのウィンドウをコピーして左右にならべて表示します。

定数を指定することで上下に並べて表示することも可能です。

同じウィンドウをコピーして表示しているので、当然ながらセルへの入力は同期されます。同シートの離れた位置などの確認や比較などに便利です。

◆ウィンドウを並べて比較表示する

上は同じウィンドウのコピーでしたが、こちらは異なるブック間で二つのウィンドウを開き「並べて比較モード(スクロール同期)」で表示するものです。

サンプルとして準備した「Sample1.xlsx」には簡易的な表を作成してあり、そのブックを開いて「並べて比較モード」で開いた形が以下になります。

画像上側が「Sample1.xlsx」ブックの表になっており、開く際に比較元のブックとアクティブセル位置を同じA1位置としているので、スクロール同期で位置がずれないようにしています。

どちらかをスクロールさせてみると、異なるブック間のウィンドウであっても同期して動くので、比較などに便利かと思います。

以上がサンプル概要になります。

2.サンプルコード

◆同じウィンドウをコピー:NewWindowメソッド

Sub Sample1()

 '現在開いているブックのコピーを作成
 ThisWorkbook.NewWindow
 
 'コピーしたウィンドウを左右に並べて表示する
 Windows.Arrange ArrangeStyle:=xlArrangeStyleVertical
 
 '↓↓上下に並べて表示する場合は
 '  定数xlArrangeStyleHorizontalと指定
 'Windows.Arrange ArrangeStyle:=xlArrangeStyleHorizontal

End Sub

同じウィンドウのコピーを作成するにはNewWindowメソッドを利用します。

構文:オブジェクト.NewWindow

コピーしたウィンドウを並べて表示する際に並び方向を指定するにはWindows.Arrange ArrangeStyle:=として定数を指定します。左右に並べて表示するにはxlArrangeStyleVertical上下に並べて表示するにはxlArrangeStyleHorizontalとすればOKです。

◆ブック間のデータ比較:CompareSideBySideWithメソッド

Sub Sample2()

  '※異なるブックを二つのウィンドウで開き、
  '  「並べて比較モード(スクロール同期)」で表示
  
  'サンプルでは基準位置をセルA1として選択
  Range("A1").Select
  
  'ウィンドウを並べて比較したいブックを開く
  Workbooks.Open ThisWorkbook.Path & "\Sample1.xlsx"
  
  '開いたブックのアクティブセル位置がセルA1以外であれば、
  'セルA1を選択する
  '(並べて比較するのでアクティブセル位置を同じにする)
  If ActiveCell.Address(False, False) <> "A1" Then
       Range("A1").Select
  End If
  
  '開いたブックと現在のブックを並べて比較モードで表示
  Windows.CompareSideBySideWith ThisWorkbook.Name

End Sub

異なるブック間でそれぞれの二つのウィンドウを開いて「並べて比較モード」で表示するにはCompareSideBySideWithメソッドを利用します。

構文:オブジェクト.CompareSideBySideWith(WindowName)

この「並べて比較モード」はスクロールが同期するので、異なるブック間などのデータ確認などで便利です。但し、アクティブセルがそれぞれの比較したい位置と異なる場合はうまく比較できないこともありますので、サンプルでは予めアクティブセル位置を”A1”で同じにしています。

サンプルコードの流れとしては、まず実行元ファイルのアクティブセル位置をA1とし、比較したいSample1.xlsxを開きます。

開いたブック(Sample1.xlsx)に対し、アクティブセル位置を確認して強制的にセルA1位置へ移動させています。

後はCompareSideBySideWithメソッドで「並べて比較モード」表示する形になります。

3.まとめ

今回はデータ比較などで有用と思われるNewWindowメソッドとCompareSideBySideWithメソッドについて書いてみました。



NewWindowメソッドは同ウィンドウでの異なる場所をそれぞれ確認でき、且つ入力が同期しているので扱いやすいと思います。CompareSideBySideWithメソッドはスクロールが同期できるのでデータ確認などにはとても便利なものですが、アクティブセル位置の調整をしないと同期が有効に機能しないのでその点だけ注意が必要です。

以上、同ウィンドウをコピーして開く/ウィンドウを並べて表示する方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

 

タイトルとURLをコピーしました