Workbooks.OpenメソッドでExcelのブックを非表示で開く 3行マクロ

ファイルを非表示で開く

非表示でブックを開くマクロ
ブックを参照したいが、表面に出てこなくて良いケースVBA

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

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

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

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

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

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

Workbooks.Open 構文

expression.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

Workbooks.Open メソッドのパラメタ(引数)

名前 説明
FileName(必須) String 。 開くブックのファイル名です。
UpdateLinks ファイル内の外部参照 (リンク) の更新方法を数値指定します。 この引数が省略された場合は、リンクの更新方法を指定するように求められます。
Microsoft Excel が WKS、WK1、WK3 形式のファイルを開いていて、UpdateLinks 引数が 0 の場合、グラフは作成されませんが、そうでない場合は、ファイルに添付されたグラフからチャートが生成されます。
ReadOnly ブックを読み取り専用モードで開くには、True を指定します。
Format テキスト ファイルを開く場合は、この引数で区切り文字を指定します。 この引数を省略すると、現在の区切り文字が使用されます。 このパラメーターで使用する値の詳細については、「備考」を参照してください。
Password パスワード保護されたブックを開くのに必要なパスワードを指定します。 この引数を省略した場合、パスワードが必要なブックでは、パスワードの入力を促すダイアログ ボックスがユーザーに表示されます。
WriteResPassword 書き込み保護されたブックに書き込みをするために必要なパスワードを指定します。 この引数を省略した場合、パスワードが必要なブックでは、パスワードの入力を促すダイアログ ボックスがユーザーに表示されます。
IgnoreReadOnlyRecommended [ 読み取り専用を推奨する] チェック ボックスをオンにして保存されたブックを開くときでも、読み取り専用を推奨するメッセージを非表示にするには、 True を指定します。
Origin ファイルがテキスト ファイルの場合、この引数でファイルの作成元を指定します。これにより、コード ページと改行コード (CR/LF) を正しくマッピングできます。 使用できる定数は、XlPlatform クラスの xlMacintosh、xlWindows、xlMSDOS?のいずれかです。 この引数を省略すると、現在のオペレーティング システムが使用されます。
Delimiter ファイルがテキスト ファイルで、Format 引数が 6 の場合は、この引数は区切り記号として使用する文字を指定する文字列です。 たとえば、タブには Chr(9) を、カンマには ","、セミコロンには ";" を使用し、またはカスタム文字を使用します。 文字列の最初の文字のみが使用されます。
Editable 開こうとしているファイルが Excel 4.0 のアドインの場合、この引数に True を指定すると、アドインがウィンドウとして表示されます。 この引数に False を指定するか、この引数を省略すると、アドインは非表示の状態で開かれ、ウィンドウとして表示することはできません。 この引数は、Excel 5.0 以降で作成されたアドインには適用されません。
開こうとしているファイルが Excel テンプレートの場合、 True を指定すると、テンプレートが編集用に開きます。 False を指定すると、テンプレートを基に新しいブックが開きます。 既定値は False です。
Notify ファイルが読み取り/書き込みモードで開けない場合に、ファイルを通知リストに追加するには、True を指定します。 ファイルが読み取り専用モードで開かれて通知リストに追加され、ファイルが編集可能になった時点でユーザーに通知されます。 ファイルが開けない場合に、このような通知を行わずにエラーを発生させるには、 False を指定するか省略します。
Converter ファイルを開く際に最初に試すファイル コンバーターのインデックスです。 指定されたファイル コンバーターが最初に試されます。このコンバーターがファイルを認識できない場合、他のすべてのコンバーターが試されます。 コンバーター インデックスは FileConverters プロパティで返されたコンバーターの行番号で構成されています。
AddToMru 最近使用したファイルの一覧にブックを追加するには、 True を指定します。 既定値は False です。
Local Excel の言語設定 (コントロール パネルの設定を含む) に合わせてファイルを保存するには、True を指定します。 Visual Basic for Applications (VBA) の言語設定に合わせてファイルを保存する場合は、False?(既定値) を指定します。VBA の設定は、通常、Workbooks.Open を実行する VBA プロジェクトが Excel バージョン 5 または 95 の各国語版で作成されたプロジェクトでない限り、英語 (米国) になります。
CorruptLoad 使用できる定数は、xlNormalLoad、xlRepairFile、xlExtractData のいずれかです。 このパラメーターに値が指定されていない場合の既定の動作は xlNormalLoad になり、OM を通じて開始するときに回復は行われません。

現在のアクティブなブックのパス

現在のアクティブなブックのパスを取得するには、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 () という空のイベン卜プロシージャが作成されます。
コードの中身を貼りつけてください。保存して閉じます。
ファイルを非表示で開くマクロ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