ブックを非表示で開く 3行マクロ 57回

Workbooks.Openメソッドでファイルを非表示で開く

Workbooks.Openメソッドを使うとファイルのパスを指定してファイルを開くことができます。
別のブックにデータを入力しておいて利用したいけれど、それを表示したくないというケースがあります。ブックを開いても非表示にするマクロがあればいいですね。 今回は、ブックを非表示で開くマクロを作ります。

(サンプルファイルは、こちらから 3行マクロ57回サンプルデータ

WorkbooksコレクションのOpenメソッド

アクティブブックと同じフォルダに収録されている”リスト.xlsx”ファイルを開くことにします。 Workbooks.Openメソッドは、非常に多くのパラメタがあり、一見複雑に見えますが、基本的には、ファイル名を指定すれば開くことができます。
Workbooks.Openメソッド
マクロ講座の11回でブックを開くマクロは、マクロの記録で作りました。 コードは、とてもシンプルでWorkbooks.Openメソッドにファイル名をフルパスで指定するというだけのものです。 このコードに少し手を加えましょう。
Sub ブックを開く()
    Workbooks.Open Filename:="C:\Book1.xls"
End Sub

アクティブブックのパス

現在のアクティブなブックのパスを取得するには、WorkbookオブジェクトのPathプロパティを使用して、 ActiveWorkbook.Path となります。 アクティブブックと同じフォルダに収録されている”リスト.xlsx”のパスは、どのように書くかというと、
ActiveWorkbook.Path + "\リスト.xlsx"
ファイル名のところに入替えましょう。また、ReadOnlyで読み取り専用モードで開くようにします。 OpenメソッドでReadOnly:=Trueと指定すると、ブックを一時的に読み取り専用モードで開きます。
Sub ブックを非表示で開く()
    Workbooks.Open Filename:=ActiveWorkbook.Path + "\リスト.xlsx", ReadOnly:=True
End Sub
    

ブックのウィンドウを非表示にする

今回のマクロは、開いたブックを非表示にしたいのですが、Excelでは、ウィンドウを非表示にするという操作になります。
VBAでは、WindowsオブジェクトのVisibleプロパティにFalseを指定することで可能です。
ActiveWindow.Visible = False
前記のコードにこの1行を追加します。 SubをPrivate Subに変更します。 Private Subに変更すると、マクロの一覧に表示されなくなります。
Private Sub Workbook_Open()
  Workbooks.Open Filename:=ActiveWorkbook.Path + "\リスト.xlsx", ReadOnly:=True
  ActiveWindow.Visible = False
End Sub
    

Openイベントマクロの作成

しかしこのままでは、直接実行する以外に、どうやって使うんだということになりますね。ブックを開いた時に自動実行されるようにします。
方法は、Openイベントマクロを作成してしまうことです。 VBEのプロジェクトエクスプローラでThisWorkBookをダブルクリックすると、コードウインドウが表示されます。
ファイルを非表示で開くマクロ1
ここにOpenイベントマクロを作成します。オブジェクトリストからWorkbook、プロシージャリストからOpenを選択します。
ファイルを非表示で開くマクロ1
自動的に Private Sub Workbook_Open 0 という空のイベン卜プロシージャが作成されます。コードの中身を貼りつけてください。保存して閉じます。
ファイルを非表示で開くマクロ1
ブックを開き、マクロを実行しましょう。残念ながら、このコードだけでは、一瞬ですが、タスクバーにブックを開いていると表示されてしまいます。開いた後は非表示です。
ファイルを非表示で開くマクロ1
タスクバーに一瞬たりとも表示されてしまうのが嫌なら、もう1行追加します。
Application.ScreenUpdating = False
Private Sub Workbook_Open2()
  Application.ScreenUpdating = False
  Workbooks.Open Filename:=ActiveWorkbook.Path + "\リスト.xlsx", ReadOnly:=True
  ActiveWindow.Visible = False
End Sub
    
以上で非表示でブックを開くマクロは完成です。利用する時は、"\リスト.xlsx"の部分をご自分の環境に合わせて書き換えてください。 また、Openイベントマクロの作成は、自分で挑戦してみてください。空のイベン卜プロシージャに、 下図のようにサンプルのコードを貼り付けるだけです。
ファイルを非表示で開くマクロ1
もし非表示にしているブックを開きたければ、表示タブのウィンドウグループにある再表示ボタンをクリックします。 ウィンドウの再表示ダイアログボックスに現在非表示になっているブックの一覧が表示されます。開くことはできますが、読み取り専用なので、仮に編集しても保存することができません。
ファイルを非表示で開くマクロ2
スポンサーリンク
スポンサーリンク