Excelブックを開く
<< エクセルVBAでブックをアクティブにする :前の記事
こちらでは、WorkbooksコレクションオブジェクトのOpenメソッドを利用して、Excelブックを開く方法について解説しています。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
プロパティとはオブジェクトの属性を指します。属性とは、そのオブジェクトの情報そのものです。プロパティはその値を取得したり、設定することもできます。プロパティを利用するにはオブジェクト名とプロパティ名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.プロパティ名
また、プロパティを設定する場合は以下のように「=(イコール)」を記述し設定値を代入します。
オブジェクト名.プロパティ名 = 設定値
目次
はじめに
こちらでは、Openメソッドを利用したExcelのブックを開く方法について解説します。
利用するメソッドについて
今回利用するメソッドは以下になります。- Openメソッド
Openメソッドとは
WorkbooksコレクションオブジェクトのOpenメソッドは新しいブックを作成します。
指定したブックを開くサンプルコード
今回のVBAコードはExcelの指定したブックを開くマクロになります。
Sub sample()
Workbooks.Open fileName:="C:\Book1.xls"
End Sub
実行結果
「Book1」ブックを開きます。

解説
sampleプロシージャのSubステートメントに引数は設定されていません。WorkbooksコレクションオブジェクトのOpenメソッドには、引数FileNameに「C:\Book1.xls」を設定しています。引数FileNameには、開くブックのファイル名を指定しますので、Book1.xlsのファイルが開きます。そして、最後はEndステートメントを利用してsampleプロシージャを終了させます。
ファイル名を指定する場合はファイルまでのパスを記述しますが、パスを省略してファイル名のみを記述した場合は、カレントフォルダにあるブックを開くので覚えておきましょう。
Sub sample()
Workbooks.Open fileName:="Book1.xls"
End Sub
今回は、無事にブックを開いた事例ですが、引数FileNameに存在しないファイル名を指定した場合は、以下のような実行時エラーが表示されます。実行時エラーを回避するためには、ファイルが存在するかのチェックやエラーを無視する処理を入れることで回避できます。
実行時エラー'1004':
C:\Book12.xlsが見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。[ファイル]メニューの最近使用したファイルの一覧からファイルを開こうとしている場合は、そのファイルの名前が変更さrていないこと、移動または削除されていないことを確認してください。

それとすでに同じ名前のブックを開いている場合は、以下のような警告メッセージが表示されます。警告メッセージが表示させると処理が中断してしまいますので、こちらも同様に同じファイルが開いていないかをチェックすることで回避できます。
Book1.xlsは既に開いています。2重に開くと、これまでの変更内容は破棄されます。Book1.xlsを開きますか?

また、こちらでは名前付き引数を使用して引数設定していますが、以下のように名前付き引数をつけなくても設定できます。
Sub sample()
Workbooks.Open "C:\Book1.xls"
End Sub
読み取り専用でブックを開くサンプルコード
今回のVBAコードは読み取り専用でExcelのブックを開くマクロになります。
Sub sample()
Workbooks.Open fileName:="C:\Book1.xls", ReadOnly:=True
End Sub
実行結果
「Book1」ブックが読み取り専用で開きます。

解説
Openメソッドには、引数FileNameに「C:\Book1.xls」を引数ReadOnlyに「True」を設定しています。引数ReadOnlyには、読み取り専用にするかどうかを設定しますので、「True」を設定することで読み取り専用となります。
まとめ
今回は、WorkbooksコレクションオブジェクトのOpenメソッドを利用して、Excelのブックを開く方法について解説しました。次回は、エクセルVBAでExcelブックを閉じる方法について解説します。
エクセルVBAのブック操作一覧
次の記事: エクセルVBAでExcelブックを閉じる >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。