「エクセルVBAで、ワークブック (ファイル) を自動で開くにはどうしたらいいのだろう?」
このように悩んだことはありませんか?

・セルに設定したパスのワークブックを開きたい。
・ダイアログを使用してワークブックを選択したうえで開きたい。



その場合は、VBAの「Workbooks.Openメソッド」を
使用すると解決します!
この記事では、エクセルVBAの「Workbooks.Openメソッド」を使用してワークブックを開く方法について詳しく説明します。
このメソッドを活用することで、普通にファイルを開くだけでなく「読み取り専用」や「パスワード保護されたワークブック」の操作もスムーズに行え、業務効率を大幅に向上させることができます。
使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。
基本的な使い方から、実際の業務で役立つ応用例まで、分かりやすく解説していきます。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?
初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。
そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。
- VBAの基礎を丁寧に、ゼロから分かりやすく解説
- 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
- 手元に置いて何度も確認できるため、挫折せずに学習を続けられる
動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。




この記事を見てできるようになること
この記事を読めば、以下のことができるようになります。
- VBAのWorkbooks.Openメソッドの基本を理解する
- Workbooks.Openメソッドの注意ポイントを理解する
- 実践でWorkbooks.Openメソッドを使用する方法を習得する
Workbooks.Openメソッドの基本を解説
Workbooks.Openメソッドは、指定したワークブック (ファイル)を開くために使用するVBAのメソッドです。
このメソッドを使用することで、エクセルやその他ワークブックをVBAコードから直接開くことができます。
また、ただワークブックを開くだけでなく、「読み取り専用」や「パスワード保護」も開くことができます。


Workbooks.Openメソッドの構成・引数
Workbooks.Openメソッドは、多くの引数を持っており、それぞれに特定の機能があります。


引数が多すぎて訳が分かりませんね。。。
安心してください。よく使用するものだけ、覚えたら問題有りません。
以下のテーブルに代表的な引数をまとめました。
引数 | 省略可能か | 説明 | デフォルト値 |
---|---|---|---|
Filename | 必要 | 開くファイルのパスを指定します。 | なし |
ReadOnly | 省略可能 | ファイルを読み取り専用で開くか どうかを指定します。 読み取り専用はTrueを指定します。 | False |
Password | 省略可能 | パスワード保護をされたファイルを 開くためのパスワードを指定します。 | なし |
WriteResPassword | 省略可能 | 書き込み保護をされたファイルを 編集するためのパスワードを 指定します。 | なし |
IgnoreReadOnlyRecommended | 省略可能 | ファイルを読み取り専用で開くことを 推奨する警告を無視するかどうかを 指定します。 読み取り専用メッセージを非表示に する場合はTrueを指定します。 | False |
CorruptLoad | 省略可能 | ファイルが破損している場合の 読み取り方法を指定します。 使用できる定数は、xlNormalLoad、 xlRepairFile、xlExtractData に なります。 | xlNormalLoad |
より詳しい情報は、Microsoft公式のWorkbooks.Open メソッド (Excel)を参照してください。
オブジェクト変数でワークブックを開く場合のコードの違い
通常、Workbooks.Openメソッドは次のようにカッコを使わずに記述します。
Workbooks.Open "C:\パス\ファイル名.xlsx"
ただし、オブジェクト変数にワークブックを格納する場合、「Setステートメント」を使用するため、カッコで引数を囲む必要があります。
この違いを理解しておくと、エラーを防ぐことができます。
オブジェクト変数を使った場合の例
オブジェクト変数を使ってワークブックを開く方法を、次に記載します。
引数を使用せず記載する場合は、以下のように記載します。
Dim wb As Workbook
Set wb = Workbooks.Open("C:\パス\ファイル名.xlsx")
このコードでは、Setステートメントを使用してワークブックをオブジェクト変数「wb」に格納します。
また、同時にファイルは開かれ、オブジェクト変数「wb」を通じてさらに操作が可能になります。
引数を指定して記載する場合は、以下のように記載します。
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\パス\ファイル名.xlsx", ReadOnly:=True)
この例では、ReadOnlyなどの引数を指定してファイルを開きます。
指定されたオプションに従ってファイルが開かれ、その後オブジェクト変数「wb」を通じて内容にアクセスできます。
このことから、「通常の記載方法」と「オブジェクト変数」を使用した方法の違いは以下の通りです。
- 通常のファイルを開く場合は、カッコを使用しません。
- オブジェクト変数にファイルを格納する場合は、引数をカッコで囲む必要があります。
ワークブックを開いた後の「閉じる」操作も忘れずに!
Workbooks.Openメソッドでワークブックを開いた後、その作業が終わったら、必ずワークブックを閉じることが大切です。
ワークブックを閉じないまま放置すると、次にワークブックを開こうとしたときにエラーが発生する場合があります。
Excel VBAでは、以下のようにWorkbooks.Closeメソッドを使用してワークブックを閉じることができます。
ワークブックを開いた場合は、閉じる操作を忘れないようにしましょう。
Workbooks("ファイル名.xlsx").Close
以下の記事で詳しく解説していますので、ぜひ参考にしてください。


ファイルパスを簡単に取得する方法をご紹介
Workbooks.Openメソッドを使用する際は、ファイルパスを正確に指定する必要があります。
ここでは、簡単にファイルパスを取得する方法を紹介します。
ファイルパスを取得する操作
- ファイルを選択した状態で「Shift」⁺「右クリック」を押します。
- 開いたメニューから「パスのコピー(A)」を選択をします。


この操作を行うことで、「”C:\サンプル\サンプル1.xlsx”」このような正確なファイルパスを簡単に取得することができます。
Workbooks.Openメソッドを使う際の注意ポイント
Workbooks.Openメソッドを使う際の注意ポイントは、以下の通りとなります。
間違いやすい内容もあるため、注意しましょう。
- ファイルパスの正確さ
- ファイルを開くためには、正確なパスを指定する必要があります。
ファイルパスに誤りがあると、エラーが発生し、ファイルを開くことができません。
必ず「Shift」+「右クリック」でファイルパスをコピーして使用するようにしましょう。
- ファイルを開くためには、正確なパスを指定する必要があります。
- ファイルが既に開いているか確認する
- ファイルが既に開かれている状態で再度開こうとすると、エラーが発生することがあります。
ファイルを開く前に、対象ファイルが既に開かれているかを確認するコードを追加すると、エラーを防げます。
- ファイルが既に開かれている状態で再度開こうとすると、エラーが発生することがあります。
- 読み取り専用でのファイル操作
- 読み取り専用でファイルを開く場合、編集や保存ができません。
そのため、ファイルを誤って編集してしまうことを防ぎたい場合に適していますが、保存が必要な場合は通常モードで開くようにしましょう。
- 読み取り専用でファイルを開く場合、編集や保存ができません。
- パスワード保護されたファイル
- パスワード保護されたファイルを開く際には、正しいパスワードを指定する必要があります。
パスワードを間違えると、エラーが発生し、ファイルを開けません。
正確なパスワードを指定するように注意しましょう。
- パスワード保護されたファイルを開く際には、正しいパスワードを指定する必要があります。
- ファイルの破損に対する対策
- 破損したファイルを開く際は、「CorruptLoad 引数」を使って、Excelが提供する修復オプションを試すことができます。
破損したファイルが頻繁にある場合は、このオプションの使用を検討しましょう。
- 破損したファイルを開く際は、「CorruptLoad 引数」を使って、Excelが提供する修復オプションを試すことができます。
- オブジェクト変数を使用して、引数を指定する場合はカッコで囲む
- オブジェクト変数を使って「Workbooks.Open」メソッドを利用する場合、引数を指定する際は、カッコで囲む必要があります。
例えば、Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)のように記述します。
カッコで囲まないとエラーが発生するため、この点に注意しましょう。
- オブジェクト変数を使って「Workbooks.Open」メソッドを利用する場合、引数を指定する際は、カッコで囲む必要があります。
Workbooks.Openメソッドの使用例をご紹介
ここからは、「Workbooks.Openメソッド」の使用例を紹介します。
どれも実際に動作するコードなので、ぜひ実行してみてください。
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
使用例1: Workbooks.Openメソッドを使用して、ワークブックを開く
Workbooks.Openメソッドを使用して、ワークブックを開く方法を紹介します。
Sub ファイルを開く()
Workbooks.Open "C:\パス\ファイル名.xlsx"
End Sub
コードの動作概要
新しいサブルーチン(プロシージャ)「ファイルを開く」を定義します。
Workbooks.Openメソッドを使用して、指定したパスにあるExcelファイルを開きます。
ファイルが正常に開かれた後、サブルーチンの処理が終了し、プログラムが次のステップに進みます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ファイルを開く()
- この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
プロシージャ名は「ファイルを開く」で、このサブルーチンが実行されると、指定されたファイルを開く処理が行われます。
- この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
- Workbooks.Open “C:\パス\ファイル名.xlsx”
- Workbooks.Openメソッドを使用して、指定されたファイルパスにあるExcelファイルを開きます。
ここでの「”C:\パス\ファイル名.xlsx”」は、開きたいファイルのフルパスを指定します。
ファイルパスを指定する際には、ファイルの場所や名前が正しいことを確認してください。
- Workbooks.Openメソッドを使用して、指定されたファイルパスにあるExcelファイルを開きます。
- End Sub
- ここで、Subステートメントで始まったサブルーチンが終了します。
Workbooks.Openは、ファイルパスを間違えないように注意することが大切です。
正確なパスを指定すれば、簡単にワークブックを開くことができます。
このサブルーチンは、VBAを使って特定のパスにあるワークブックを開くための最も基本的な方法を示しています。
Workbooks.Openメソッドは、ワークブックをプログラム的に開く際に頻繁に使用されるため、Excel VBAの操作において非常に重要なスキルです。
使用例2: 読み取り専用でワークブックを開く方法
読み取り専用でワークブックを開く方法について紹介します。
引数にReadOnly:=Trueを指定することで、読み取り専用でワークブックを開くことができます。
元のワークブックを変更したくない場合に、よく使用されます。
Sub 読み取り専用でファイルを開く()
Const filePath As String = "C:\パス\ファイル名.xlsx"
Workbooks.Open filePath, ReadOnly:=True
End Sub
コードの動作概要
ファイルのパスを保存する定数「filePath」を定義し、開くべきファイルのパスを指定します。
Workbooks.Openメソッドを使用して、指定したファイルを「読み取り専用」で開きます。
ファイルが正常に読み取り専用で開かれた後、サブルーチンの処理が終了し、プログラムが次のステップに進みます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub 読み取り専用でファイルを開く()
- この行では、新しいサブルーチン(プロシージャ)「読み取り専用でファイルを開く」を定義しています。
実行されると、指定したファイルを「読み取り専用」で開く操作が行われます。
- この行では、新しいサブルーチン(プロシージャ)「読み取り専用でファイルを開く」を定義しています。
- Const filePath As String = “C:\パス\ファイル名.xlsx”
- 「Const ステートメント」は定数を定義するために使います。
定数は、一度設定すると変更できない固定の値です。
ここでは「filePath」という名前で定数を定義し、その中にファイルのパス(ファイルが保存されている場所)を指定しています。
この場合、「filePath」は「C:\パス\ファイル名.xlsx」という文字列を持っています。
定数を使うことで、後からファイルのパスを簡単に変更できるようになります。
また、パスが間違っているとファイルを開けないので、正確なパスを指定することが重要です。
- 「Const ステートメント」は定数を定義するために使います。
- Workbooks.Open filePath, ReadOnly:=True
- Workbooks.Open はVBAでエクセルファイルを開くためのメソッドです。
ここでは、「filePath」で指定したファイルを開きます。
ReadOnly:=True という引数を指定することで、ファイルを「読み取り専用」で開くことができます。
つまり、このファイルを閲覧することはできますが、編集して保存することはできません。
読み取り専用でファイルを開くことで、誤ってファイルを変更することを防ぎたい場合に便利です。
また、「:= 」の記号は、引数に特定の値を指定するために使われます。
- Workbooks.Open はVBAでエクセルファイルを開くためのメソッドです。
- End Sub
- これはサブルーチンの終了を示す行です。
この行まで処理が実行されたら、サブルーチンの実行が終了します。
ここで処理が終わり、他のコードに進む準備ができます。
- これはサブルーチンの終了を示す行です。
このコードは、指定したワークブックを「読み取り専用」で開くためのシンプルなプロセスを示しています。
読み取り専用で開くと、ワークブックの内容を変更して保存することができないため、誤ってデータを上書きしてしまう心配がありません。
使用例3: オブジェクト変数を使用したワークブックの開き方
オブジェクト変数を使用してワークブックを開く方法について紹介します。
この場合、ワークブックを開いた後さらに別の操作を行う際に便利です。
Sub オブジェクト変数を使用してファイルを開く()
Const filePath As String = "C:\パス\ファイル名.xlsx"
Dim Wb As Workbook
Set Wb = Workbooks.Open(filePath)
'// ここでWbを使用して、さらに別の操作を行う
End Sub
コードの動作概要
Const ステートメントを使って開くファイルのパスを指定し、定数として宣言します。
Workbook 型のオブジェクト変数「Wb」を宣言し、開くファイルを格納する準備をします。
Workbooks.Open(filePath) を使用して指定されたファイルを開き、そのワークブックを Wb 変数に格納します。
開いたファイルに対して別の操作を加えるためのスペースを確保します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub オブジェクト変数を使用してファイルを開く()
- これは新しいプロシージャ(サブルーチン)を定義する行です。
Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
ここでは「オブジェクト変数を使用してファイルを開く」という名前のサブルーチンを定義しています。
このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
- これは新しいプロシージャ(サブルーチン)を定義する行です。
- Const filePath As String = “C:\パス\ファイル名.xlsx”
- 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
定数「filePath」に設定された値は、このコードが実行される間は変更されません。
この定数には、開きたいエクセルファイルのパス(場所)が設定されています。
- 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
- Dim Wb As Workbook
- 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
Workbook 型は、エクセルのブック(ファイル)を扱うためのオブジェクト型です。
ここで宣言された「Wb」というオブジェクト変数は、後で開かれるワークブックを格納するために使われます。
Workbook オブジェクトを変数として保持することで、そのファイルに対して様々な操作を効率よく行うことができます。
- 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
- Set Wb = Workbooks.Open(filePath)
- 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
Workbooks.Open(filePath) は、指定された定数「filePath」のエクセルファイルを開き、その開かれたワークブックを返します。
「Set」を使ってそのワークブックをオブジェクト変数「Wb」に格納します。
これにより、オブジェクト変数「Wb」を通じて開いたワークブックにアクセスできます。
このオブジェクト変数を使えば、開いたファイルに対して様々な操作(例えばセルへのデータ入力やシートの削除など)を行うことができます。
- 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
- ‘// ここでWbを使用して、さらに別の操作を行う
- ここにはコメントが書かれており、開いたワークブック「Wb」に対して、さらに別の操作を加える場所であることを示しています。
たとえば、データの追加やフォーマットの変更など、開いたワークブックに対するアクションをここに追加します。
- ここにはコメントが書かれており、開いたワークブック「Wb」に対して、さらに別の操作を加える場所であることを示しています。
- End Sub
- サブルーチンの終了を示す行です。
すべての操作が完了したら、この行でサブルーチンが終了します。
この行の後は、次に実行するべきコードがあれば、そちらに処理が移ります。
- サブルーチンの終了を示す行です。
このコードは、ワークブックを開いて、そのファイルに対してオブジェクト変数「Wb」を通じて操作を加えるための基本的な構造です。
オブジェクト変数を使用することで、コードの可読性や再利用性が向上し、複雑な操作も簡単に処理できるようになります。
使用例4: オブジェクト変数を使用し、読み取り専用でワークブックを開く方法
オブジェクト変数を使用して、読み取り専用でワークブックを開く方法について紹介します。
オブジェクト変数を使用して、引数を指定する場合はカッコで囲む必要があります。
Sub オブジェクト変数を使用して読み取り専用でファイルを開く()
Const filePath As String = "C:\パス\ファイル名.xlsx"
Dim Wb As Workbook
Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
'// ここでWbを使用して、さらに別の操作を行う
End Sub
コードの動作概要
Const ステートメントで開くファイルのパスを定数「filePath」として宣言します。
Workbook 型のオブジェクト変数「Wb」を宣言して、開いたファイルを格納する準備をします。
Workbooks.Open メソッドを使用し、ファイルを読み取り専用 (ReadOnly:=True) で開きます。
その際、 Wb 変数に開いたファイルを格納します。
開いたファイルに対してさらなる操作を行うためのスペースが確保されています。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub オブジェクト変数を使用して読み取り専用でファイルを開く()
- これは新しいプロシージャ(サブルーチン)を定義する行です。
Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
ここでは「オブジェクト変数を使用して読み取り専用でファイルを開く」という名前のサブルーチンを定義しています。
このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
- これは新しいプロシージャ(サブルーチン)を定義する行です。
- Const filePath As String = “C:\パス\ファイル名.xlsx”
- 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
定数「filePath」に設定された値は、このコードが実行される間は変更されません。
この定数には、開きたいエクセルファイルのパス(場所)が設定されています。
- 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
- Dim Wb As Workbook
- 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
Workbook 型は、エクセルのブック(ファイル)を扱うためのオブジェクト型です。
ここで宣言された「Wb」というオブジェクト変数は、後で開かれるワークブックを格納するために使われます。
Workbook オブジェクトを変数として保持することで、そのファイルに対して様々な操作を効率よく行うことができます。
- 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
- Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
- 「Workbooks.Open メソッド」を使って、先ほど指定したファイルを開いています。
Filename:=filePath は、開くファイルの場所を指定しており、ここでは 変数「filePath」に格納されたパスのファイルを開きます。
ReadOnly:=True を指定することで、ファイルを読み取り専用(編集できない状態)で開くようにしています。
Set Wb = の部分は、この開いたファイルをオブジェクト変数「Wb」に格納する処理です。
これで、オブジェクト変数「Wb」を使って開いたファイルに対して操作が可能になります。
また、「:= 」の記号は、引数に特定の値を指定するために使われます。
- 「Workbooks.Open メソッド」を使って、先ほど指定したファイルを開いています。
- ‘// ここでWbを使用して、さらに別の操作を行う
- 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
Workbooks.Open(filePath) は、指定された定数「filePath」のエクセルファイルを開き、その開かれたワークブックを返します。
「Set」を使ってそのワークブックをオブジェクト変数「Wb」に格納します。
これにより、オブジェクト変数「Wb」を通じて開いたワークブックにアクセスできます。
このオブジェクト変数を使えば、開いたファイルに対して様々な操作(例えばセルへのデータ入力やシートの削除など)を行うことができます。
- 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
- End Sub
- この行でサブルーチン(プロシージャ)が終了します。
Sub で始まった処理が End Sub で終了します。
このサブルーチンが完了すると、VBAのプログラムは次の指示に進むか、すべての処理が終了します。
- この行でサブルーチン(プロシージャ)が終了します。
このコード全体は、指定されたワークブックを読み取り専用で開き、そのファイルを変数 Wb に格納して後で操作できるように準備するためのものです。
使用例5: パスワードを指定してワークブックを開く方法
パスワード保護されたワークブックを開く方法について紹介します。
引数にPasswordを入力することで設定することができます。
次の例では、「パスワード」という文字列を設定しています。
Sub パスワードで保護されたファイルを開く()
Const filePath As String = "C:\パス\ファイル名.xlsx"
Dim Wb As Workbook
Set Wb = Workbooks.Open(Filename:=filePath, Password:="パスワード")
'// ここでWbを使用して、さらに別の操作を行う
End Sub
コードの動作概要
Const ステートメントで開くファイルのパスを定数「filePath」として宣言します。
Workbook 型のオブジェクト変数「Wb」を宣言して、開いたファイルを格納する準備をします。
Workbooks.Open メソッドを使用し、指定されたパスワードを使ってパスワード保護されたファイルを開きます。
開かれたファイルは変数「Wb」に格納されます。
開いたファイルに対してさらなる操作を行うためのスペースが確保されています。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub パスワードで保護されたファイルを開く()
- これは新しいプロシージャ(サブルーチン)を定義する行です。
Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
ここでは「パスワードで保護されたファイルを開く」という名前のサブルーチンを定義しています。
このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
- これは新しいプロシージャ(サブルーチン)を定義する行です。
- Const filePath As String = “C:\パス\ファイル名.xlsx”
- 「Const ステートメント」を使って定数「filePath」を宣言しています。
定数は変更できない変数で、この場合、開くファイルのフルパス(ファイルの場所)を文字列で指定しています。
定数「filePath」に代入された値を基に、VBAが指定されたExcelファイルを開きます。
- 「Const ステートメント」を使って定数「filePath」を宣言しています。
- Dim Wb As Workbook
- オブジェクト変数「Wb」を Workbook 型として宣言しています。
Workbook 型はExcelのワークブック(Excelファイル)を表すオブジェクトです。
この変数に、後ほど開かれるExcelファイルを格納します。
- オブジェクト変数「Wb」を Workbook 型として宣言しています。
- Set Wb = Workbooks.Open(Filename:=filePath, Password:=”パスワード”)
- 「Set ステートメント」を使用して、オブジェクト変数「Wb」に開いたファイルを代入しています。
「Workbooks.Open メソッド」を使って、指定されたファイルパスのファイルを開きます。
Filename:=filePath は開くファイルのパスを指定しており、Password:=”パスワード” で開く際に使用するパスワードを指定しています。
この行が実行されると、filePath のパスにあるExcelファイルがパスワードを使って開かれ、そのファイルがオブジェクト変数「Wb」に格納されます。
また、「:= 」の記号は、引数に特定の値を指定するために使われます。
- 「Set ステートメント」を使用して、オブジェクト変数「Wb」に開いたファイルを代入しています。
- ‘// ここでWbを使用して、さらに別の操作を行う
- この行はコメントです。コードに影響はありません。
ここに Wb を使ってファイルに対して別の操作を加えるコードを記述することができます。
例えば、シートを追加したり、データを入力したりするなどの操作を記述する場所です。
- この行はコメントです。コードに影響はありません。
- End Sub
- この行でサブルーチン(プロシージャ)が終了します。
Sub で始まった処理が End Sub で終了します。
このサブルーチンが完了すると、VBAのプログラムは次の指示に進むか、すべての処理が終了します。
- この行でサブルーチン(プロシージャ)が終了します。
このサブルーチンは、パスワード保護されたワークブックを開く方法を紹介します。
Workbooks.Open メソッドを使用し、パスワードを指定してワークブックを開きます。
ワークブックが開かれると、Wb というオブジェクト変数に格納され、さらにそのワークブックに対して操作が行えるようになります。
使用例6: ワークブックが開かれていない場合だけ、ワークブックを開く方法
指定したワークブックが開かれていない場合のみ、ワークブックを開く方法を紹介します。
ワークブックがすでに開かれている場合には、メッセージボックスでエラーメッセージを表示して操作ミスを防ぎます。
Sub ファイルを確認して開く()
'// 開きたいファイルのパスを定義
Const filePath As String = "C:\サンプル\サンプル1.xlsx"
'// 変数の宣言
Dim wb As Workbook
Dim isAlreadyOpen As Boolean
'// ファイルが既に開かれているかチェック
isAlreadyOpen = False ' 初期値をFalseに設定
For Each wb In Workbooks
'// すでに開いているワークブックのパスと比較
If wb.FullName = filePath Then
isAlreadyOpen = True
Exit For '// 同じファイルが見つかったらループを抜ける
End If
Next wb
'// ファイルが既に開かれている場合
If isAlreadyOpen Then
MsgBox "このファイルは既に開かれています。", vbExclamation
Else
'// ファイルが開かれていない場合はファイルを開く
Workbooks.Open filePath
MsgBox "ファイルを開きました。", vbInformation
End If
End Sub
処理結果


コードの動作概要
開くファイルのフルパスを「filePath」に定義します。
「isAlreadyOpen」というブール型変数を使い、ファイルが既に開かれているかどうかを判定します。
For Eachループを使って、開かれているすべてのワークブック(Workbooksコレクション内の各ブック)を調べます。
各ワークブックのフルパス(wb.FullName)が指定したファイルパス(filePath)と一致するかを比較します。
もし開いているファイルと同じパスのファイルが見つかれば、「isAlreadyOpen」を「True」にして処理を中断します。
開いている場合はメッセージボックスでエラーメッセージを表示し、開いていない場合はWorkbooks.Openメソッドを使ってファイルを開きます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ファイルを確認して開く()
- ここでは新しい「サブルーチン」(Subプロシージャ)を定義しています。
サブルーチンとは、一連の処理をまとめたもので、この名前を使ってプログラムを実行できます。名前は「ファイルを確認して開く」です。
- ここでは新しい「サブルーチン」(Subプロシージャ)を定義しています。
- Const filePath As String = “C:\サンプル\サンプル1.xlsx”
- ここでは、「filePath」という名前で定数を定義しています。
定数は値が変わらない変数のことで、このコードでは開きたいファイルのパスを指定しています。このファイルを操作する際の基準となります。
- ここでは、「filePath」という名前で定数を定義しています。
- Dim wb As Workbook
- 「wb」という名前でWorkbook型の変数を宣言しています。
Workbook型は、Excelのワークブック(ファイル)全体を扱うための型です。
この変数で開いている各ワークブックを操作します。
- 「wb」という名前でWorkbook型の変数を宣言しています。
- Dim isAlreadyOpen As Boolean
- 「isAlreadyOpen」という名前で、Boolean型の変数を宣言しています。
Boolean型は「True」か「False」の値を持つ型で、この変数はファイルが既に開かれているかどうかを記録します。
- 「isAlreadyOpen」という名前で、Boolean型の変数を宣言しています。
- isAlreadyOpen = False ‘ 初期値をFalseに設定
- 変数「isAlreadyOpen」に「False」を代入しています。
これにより、初期状態ではファイルが開かれていないと仮定しています。
後でファイルが開かれているかどうかを確認して、この値を変更するか決めます。
- 変数「isAlreadyOpen」に「False」を代入しています。
- For Each wb In Workbooks
- For Eachループを使って、現在開いているすべてのワークブック(Excelファイル)を順番に処理します。
Workbooksは開いているすべてのワークブックのリストを表します。
1つ1つのワークブックを「wb」というオブジェクト変数に代入して処理します。
- For Eachループを使って、現在開いているすべてのワークブック(Excelファイル)を順番に処理します。
- If wb.FullName = filePath Then
- ここで、現在開いているワークブック(wb)のファイルパス(wb.FullName)と、開こうとしているファイルパス(filePath)を比較しています。
wb.FullNameはワークブックのフルパス(ディレクトリ+ファイル名)を取得します。
もし開いているファイルが、指定したファイル(filePath)と一致すれば、次の処理に進みます。
- ここで、現在開いているワークブック(wb)のファイルパス(wb.FullName)と、開こうとしているファイルパス(filePath)を比較しています。
- isAlreadyOpen = True
- ファイルが既に開かれている場合、「isAlreadyOpen」を「True」に設定します。
これにより、ファイルが既に開かれていることを示します。
- ファイルが既に開かれている場合、「isAlreadyOpen」を「True」に設定します。
- Exit For
- ループを抜ける命令です。
ファイルが既に開かれていることが確認できたら、それ以上は他のファイルをチェックする必要がないため、ループを終了します。
- ループを抜ける命令です。
- End If
- If文の終了を示します。
ここまでが「ファイルパスが一致する場合」の処理です。
- If文の終了を示します。
- Next wb
- これで次のワークブックに処理が移ります。
すべてのワークブックが確認されるまでループを続けます。
- これで次のワークブックに処理が移ります。
- If isAlreadyOpen Then
- ここで、「isAlreadyOpen」が「True」になっているかどうかを確認します。
もし「True」なら、ファイルが既に開かれているため、次のエラーメッセージを表示します。
- ここで、「isAlreadyOpen」が「True」になっているかどうかを確認します。
- MsgBox “このファイルは既に開かれています。”, vbExclamation
- メッセージボックスを表示して、ユーザーに「このファイルは既に開かれている」と警告します。
「vbExclamation」は警告アイコンを表示するための定数です。
- メッセージボックスを表示して、ユーザーに「このファイルは既に開かれている」と警告します。
- Else
- もしファイルが開かれていなければ(「isAlreadyOpen」が「False」の場合)、以下の処理を行います。
つまり、ファイルを開く処理に進みます。
- もしファイルが開かれていなければ(「isAlreadyOpen」が「False」の場合)、以下の処理を行います。
- Workbooks.Open filePath
- Workbooks.Openメソッドを使って、指定したファイル(filePath)を開きます。
- MsgBox “ファイルを開きました。
- ファイルが正常に開かれたことを知らせるメッセージボックスを表示します。
vbInformationは情報アイコンを表示するための定数です。
- ファイルが正常に開かれたことを知らせるメッセージボックスを表示します。
- End If
- If文の終了を示します。
ここまでが「ファイルが既に開かれているかどうか」で処理を分岐する部分です。
- If文の終了を示します。
- End Sub
- サブルーチンの終了を示します。
このサブルーチン全体が終了し、次の処理に移ります。
- サブルーチンの終了を示します。
この使用例では、VBAを使ってExcelファイルが既に開かれているかを確認し、開いていない場合にのみワークブックを開く処理を行う方法を紹介しました。
この処理により、誤って同じワークブックを二重に開くリスクを防ぎ、業務効率を向上させることができます。
使用例7: FileDialogを使用してワークブックを選択して開く方法
ダイアログを使用して、ワークブックを開く方法について紹介します。
FileDialogを使用すると、ユーザーにワークブックを選択してもらい開くことができます。


FileDialogとは?という方は、別の記事で詳しく解説を行っていますので合わせてご覧ください。


詳細のコードは次の通りです。
Sub FileDialogを使用してファイルを開く()
Const initialPath As String = "C:\サンプル\サンプル1.xlsx"
Dim filePath As String
Dim Wb As workbook
filePath = get_filepath(initialPath)
If filePath = "" Then Exit Sub
Set Wb = Workbooks.Open(filePath)
End Sub
Function get_filepath(initialPath As String) As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.InitialFileName = initialPath '// 初期で表示されるフォルダを指定します
.Title = "ファイルを選択してください"
.Filters.Add "Excelファイル", "*.xlsx; *.xlsm", 1
If .Show = -1 Then
get_filepath = .SelectedItems(1)
Else
MsgBox "ファイルが選択されませんでした"
get_filepath = ""
End If
End With
Set fd = Nothing
End Function
コードの動作概要
Const ステートメントで、初期表示されるフォルダのパスを定数「initialPath」として宣言します。
変数「filePath」と オブジェクト変数「wb」を宣言します。
get_filepath 関数を使って、ダイアログを表示し、ユーザーが選択したファイルのパスを取得します。
取得したパスは filePath に格納されます。
「filePath」が空でないことを確認した後、Workbooks.Open メソッドを使用して指定されたファイルを開きます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub FileDialogを使用してファイルを開く()
- これは新しいプロシージャ(サブルーチン)を定義する行です。
Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
ここでは「FileDialogを使用してファイルを開く」という名前のサブルーチンを定義しています。
このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
- これは新しいプロシージャ(サブルーチン)を定義する行です。
- Const initialPath As String = “C:\パス\ファイル名.xlsx”
- 「Const ステートメント」を使って定数「initialPath」を宣言しています。
この定数には、ファイルダイアログを開いたときに最初に表示されるフォルダやファイルのパスが格納されています。
初期表示のフォルダやファイルを指定するために使用します。
- 「Const ステートメント」を使って定数「initialPath」を宣言しています。
- Dim filePath As String
- 変数「filePath」を文字列型 (String) として宣言しています。
この変数には、ユーザーが選択したファイルのパスが格納されます。
- 変数「filePath」を文字列型 (String) として宣言しています。
- Dim Wb As Workbook
- オブジェクト変数「Wb」を Workbook 型として宣言しています。
この変数には、ユーザーが選択したファイルが開かれた後、そのファイルが格納されます。
Workbook 型はエクセルファイル全体を扱うために使用されます。
- オブジェクト変数「Wb」を Workbook 型として宣言しています。
- filePath = get_filepath(initialPath)
- 関数「get_filepath」を呼び出して、ユーザーが選択したファイルのパスを取得し、それを変数「filePath」に格納しています。
※関数「get_filepath」については、下記で動作内容を解説しています。
「initialPath」を引数として渡すことで、ファイルダイアログが初期表示されるフォルダを指定しています。
- 関数「get_filepath」を呼び出して、ユーザーが選択したファイルのパスを取得し、それを変数「filePath」に格納しています。
- If filePath = “” Then Exit Sub
- ここでは、変数「filePath」が空かどうかを確認しています。
もしユーザーがファイルを選択しなかった場合、変数「filePath」は空のままになります。
その場合は「Exit Sub」によってサブルーチンを途中で終了します。
- ここでは、変数「filePath」が空かどうかを確認しています。
- Set wb = Workbooks.Open(filePath)
- この行で「Workbooks.Open メソッド」を使用して変数「filePath」に格納されたパスのファイルを開き、開いたファイルを「Wb 変数」に格納しています。
「Set ステートメント」は、オブジェクト変数(ここでは wb)にオブジェクトを代入する際に使います。
- この行で「Workbooks.Open メソッド」を使用して変数「filePath」に格納されたパスのファイルを開き、開いたファイルを「Wb 変数」に格納しています。
- End Sub
- この行でサブルーチンが終了します。これ以降の処理は行われません。
- Function get_filepath(initialPath As String) As String
- この行で、「get_filepath」という新しい関数を定義しています。
関数は特定の処理を行い、その結果を返します。
ここでは、ファイルダイアログを表示し、選択されたファイルのパスを返す処理を行います。
引数として「initialPath」を受け取り、それをファイルダイアログの初期フォルダに設定します。
- この行で、「get_filepath」という新しい関数を定義しています。
- Dim fd As FileDialog
- 「fd」という変数を FileDialog 型として宣言しています。
この変数にはファイル選択ダイアログが格納されます。
- 「fd」という変数を FileDialog 型として宣言しています。
- Set fd = Application.FileDialog(msoFileDialogFilePicker)
- 「Set ステートメント」で、変数「fd」にファイル選択ダイアログを代入しています。
Application.FileDialog(msoFileDialogFilePicker) は、ファイルを選択するためのダイアログを作成します。
- 「Set ステートメント」で、変数「fd」にファイル選択ダイアログを代入しています。
- With fd
- 「With ステートメント」は、fd オブジェクトに対して複数の操作を簡潔に書くための構文です。
ここから「End With」までの間に、fd オブジェクトに対する操作が行われます。
- 「With ステートメント」は、fd オブジェクトに対して複数の操作を簡潔に書くための構文です。
- .InitialFileName = initialPath
- ダイアログが開かれたときに、最初に表示されるフォルダやファイルのパスを指定しています。
ここでは、関数の引数として渡された「initialPath」が設定されています。
- ダイアログが開かれたときに、最初に表示されるフォルダやファイルのパスを指定しています。
- .Title = “ファイルを選択してください”
- ファイルダイアログのタイトルバーに表示されるメッセージを設定しています。
ユーザーがファイルを選択するためのダイアログであることが明示されています。
- ファイルダイアログのタイトルバーに表示されるメッセージを設定しています。
- .Filters.Add “Excelファイル”, “*.xlsx; *.xlsm”, 1
- ダイアログで表示するファイルの種類をフィルタリングしています。
ここでは、拡張子が「.xlsx」と「.xlsm」のエクセルファイルだけを表示するように設定しています。
- ダイアログで表示するファイルの種類をフィルタリングしています。
- If .Show = -1 Then
- この行では、ファイルダイアログが表示された後、ユーザーがファイルを選択して「開く」を押したかどうかを確認しています。
「.Show メソッド」は、ユーザーが「OK」を押した場合に「-1」を返します。
- この行では、ファイルダイアログが表示された後、ユーザーがファイルを選択して「開く」を押したかどうかを確認しています。
- get_filepath = .SelectedItems(1)
- ユーザーが選択したファイルのパスを取得し、それを「get_filepath関数」の戻り値として設定します。
「.SelectedItems(1)」 で、ユーザーが選んだ最初のファイルのパスを取得しています。
- ユーザーが選択したファイルのパスを取得し、それを「get_filepath関数」の戻り値として設定します。
- Else
- もしユーザーがファイルを選択せずにダイアログを閉じた場合の処理がこの後に続きます。
- MsgBox “ファイルが選択されませんでした”
- ユーザーがファイルを選択しなかった場合に表示されるメッセージボックスを設定しています。
「ファイルが選択されませんでした」とメッセージが表示されます。
- ユーザーがファイルを選択しなかった場合に表示されるメッセージボックスを設定しています。
- get_filepath = “”
- ユーザーがファイルを選択しなかった場合、関数「get_filepath 」は空の文字列を返すように設定しています。
- End If
- 「If ステートメント」の終了を示しています。
- End With
- With ステートメントの終了を示しています。
これ以降、fd に対する操作はここでは行われません。
- With ステートメントの終了を示しています。
- Set fd = Nothing
- 変数「fd」に格納されたファイルダイアログオブジェクトを解放しています。
これにより、不要になったオブジェクトがメモリから解放されます。
- 変数「fd」に格納されたファイルダイアログオブジェクトを解放しています。
- End Function
- この行で関数「get_filepath」が終了します。
これ以降の処理は行われず、関数の戻り値が返されます。
- この行で関数「get_filepath」が終了します。
このコードを実行すると、ファイル選択ダイアログが表示され、ユーザーが選択したワークブックを開くことができます。
この方法は、冗長なコードを避け、機能を分離することでコードの再利用性を高めます。
この記事のまとめ
エクセルVBAでの「Workbooks.Openメソッド」を活用することで、ワークブックをプログラムから直接開く方法を解説しました。
再度ポイントのおさらいを行いましょう。
ポイントのおさらい
- Workbooks.Openメソッドの基本的な使い方を理解する
- 「Workbooks.Openメソッド」を使用することで、VBAコードからワークブックを開くことができます。
正確なファイルパスを指定することが重要です。
⇒ 「Workbooks.Openメソッドの基本」もう一度見る。
- 「Workbooks.Openメソッド」を使用することで、VBAコードからワークブックを開くことができます。
- ファイルパスを簡単に取得する方法
- ファイルパスを手動で入力するのはミスの元です。
ファイルパスを簡単に取得するには、エクスプローラーでファイルを選択して「Shift + 右クリック」をし、「パスのコピー」を選択すると、正確なパスを取得できます。
⇒ 「ファイルパスを簡単に取得する方法」もう一度見る。
- ファイルパスを手動で入力するのはミスの元です。
- Workbooks.Openメソッドを使う際の注意ポイント
- Workbooks.Openメソッドを使用する際は、ファイルパスの正確さやファイルの状態確認が重要です。
誤ったパスや既に開かれているファイルがあるとエラーが発生します。
また、読み取り専用モードやパスワード保護にも注意し、適切な方法で開くことがトラブル防止につながります。
⇒ 「Workbooks.Openメソッドを使う際の注意ポイント」もう一度見る。
- Workbooks.Openメソッドを使用する際は、ファイルパスの正確さやファイルの状態確認が重要です。
- 使用例を通じて、実践的なファイル操作方法を学ぶ
- 使用例を通じて、読み取り専用でファイルを開く方法やオブジェクト変数を用いた操作、パスワード保護されたファイルの開き方を学びました。
また、FileDialogを使用してユーザーがワークブックを選択する方法も実践的な操作として紹介しています。
⇒ 「Workbooks.Openメソッドの使用例」もう一度見る。
- 使用例を通じて、読み取り専用でファイルを開く方法やオブジェクト変数を用いた操作、パスワード保護されたファイルの開き方を学びました。
基本的なワークブックの開き方から、読み取り専用での操作、パスワード保護されたファイルの処理、さらにはファイルダイアログを使ったファイル選択まで、業務で活用できる多様な方法を学びました。
この記事の使用例を繰り返し実践することで、より柔軟にVBAでのファイル操作が行えるようになります。

