ファイルを非表示で開く
非表示でブックを開くマクロ


ブックを非表示で開く 3行マクロ 57回
Workbooks.Openメソッドでファイルを非表示で開く
Workbooks.Openメソッドを使うとファイルのパスを指定してファイルを開くことができます。
別のブックにデータを入力しておいて利用したいけれど、そのブックを表示したくないというケースがあります。
ブックを開いても非表示にするマクロがあればいいですね。
今回は、ブックを非表示で開くマクロを作ります。
(サンプルファイルは、こちらから 3行マクロ57回サンプルデータ)
Excelバージョン:
WorkbooksコレクションのOpenメソッド
アクティブブックと同じフォルダに収録されている”リスト.xlsx”ファイルを開くことにします。
Workbooks.Openメソッドは、非常に多くのパラメタがあり、一見複雑に見えますが、基本的には、ファイル名を指定すれば開くことができます。


マクロ講座の11回でブックを開くマクロは、マクロの記録で作りました。
コードは、とてもシンプルでWorkbooks.Openメソッドに ファイル名をフルパスで指定するというだけのものです。 このコードに少し手を加えましょう。
コードは、とてもシンプルでWorkbooks.Openメソッドに ファイル名をフルパスで指定するというだけのものです。 このコードに少し手を加えましょう。
Sub ブックを開く() Workbooks.Open Filename:="C:\Book1.xls" End Sub
現在のアクティブなブックのパス
現在のアクティブなブックのパスを取得するには、WorkbookオブジェクトのPathプロパティを使用して、
ActiveWorkbook.Path となります。
アクティブブックと同じフォルダに収録されている”リスト.xlsx”のパスは、どのように書くかというと、
また、ReadOnlyで読み取り専用モードで開くようにします。
OpenメソッドでReadOnly:=Trueと指定すると、
ブックを一時的に読み取り専用モードで開きます。
アクティブブックと同じフォルダに収録されている”リスト.xlsx”のパスは、どのように書くかというと、
ActiveWorkbook.Path + "\リスト.xlsx"ファイル名のところに入替えましょう。
また、ReadOnlyで読み取り専用モードで開くようにします。
OpenメソッドでReadOnly:=Trueと指定すると、
ブックを一時的に読み取り専用モードで開きます。
Sub ブックを非表示で開く() Workbooks.Open Filename:=ActiveWorkbook.Path + "\リスト.xlsx", ReadOnly:=True End Sub
ブックのウィンドウを非表示にする
今回のマクロは、開いたブックを非表示にしたいのですが、Excelでは、ブックを表示しているウィンドウを非表示にするという操作になります。
VBAでは、WindowsオブジェクトのVisibleプロパティにFalseを指定することで可能です。
SubをPrivate Subに変更します。
Private Subに変更すると、マクロの一覧に表示されなくなります。
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をダブルクリックすると、コードウインドウが表示されます。
ブックを開いた時に自動実行されるようにします。
方法は、Openイベントマクロを作成してしまうことです。
VBEのプロジェクトエクスプローラでThisWorkBookをダブルクリックすると、コードウインドウが表示されます。

ここにOpenイベントマクロを作成します。
オブジェクトリストからWorkbook、プロシージャリストからOpenを選択します。
オブジェクトリストからWorkbook、プロシージャリストからOpenを選択します。

自動的に
Private Sub Workbook_Open () という空のイベン卜プロシージャが作成されます。
コードの中身を貼りつけてください。保存して閉じます。
コードの中身を貼りつけてください。保存して閉じます。

ブックを開き、マクロを実行しましょう。
残念ながら、このコードだけでは、一瞬ですが、タスクバーにブックを開いていると表示されてしまいます。開いた後は非表示です。

残念ながら、このコードだけでは、一瞬ですが、タスクバーにブックを開いていると表示されてしまいます。開いた後は非表示です。

タスクバーに一瞬たりとも表示されてしまうのが嫌なら、もう1行追加します。
利用する時は、"\リスト.xlsx"の部分をご自分の環境に合わせて書き換えてください。
また、Openイベントマクロの作成は、自分で挑戦してみてください。空のイベン卜プロシージャに、 下図のようにサンプルのコードを貼り付けるだけです。

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イベントマクロの作成は、自分で挑戦してみてください。空のイベン卜プロシージャに、 下図のようにサンプルのコードを貼り付けるだけです。

もし非表示にしているブックを開きたければ、表示タブのウィンドウグループにある再表示ボタンをクリックします。
ウィンドウの再表示ダイアログボックスに現在非表示になっているブックの一覧が表示されます。開くことはできますが、読み取り専用なので、仮に編集しても保存することができません。

