ファイルを非表示で開く
非表示でブックを開くマクロ
ブックを非表示で開く 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
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”のパスは、どのように書くかというと、
また、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イベントマクロの作成は、自分で挑戦してみてください。空のイベン卜プロシージャに、 下図のようにサンプルのコードを貼り付けるだけです。
もし非表示にしているブックを開きたければ、表示タブのウィンドウグループにある再表示ボタンをクリックします。
ウィンドウの再表示ダイアログボックスに現在非表示になっているブックの一覧が表示されます。開くことはできますが、読み取り専用なので、仮に編集しても保存することができません。