Excel VBAでワークブック(ファイル)を開く! Workbooks.Openメソッドの使い方【読み取り専用・パスワード対応】

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
Workbooks.openについて

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

セルに設定したパスのワークブックを開きたい。

悩みpoint1について

・ダイアログを使用してワークブックを選択したうえで開きたい。

ダイアログでファイルを開きたい

その場合は、VBAの「Workbooks.Openメソッド」を
使用すると解決します!


この記事では、エクセルVBAの「Workbooks.Openメソッド」を使用してワークブックを開く方法について詳しく説明します。

このメソッドを活用することで、普通にファイルを開くだけでなく「読み取り専用」や「パスワード保護されたワークブック」の操作もスムーズに行え、業務効率を大幅に向上させることができます。

使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。

基本的な使い方から、実際の業務で役立つ応用例まで、分かりやすく解説していきます。
ぜひ最後までお読みください。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?

初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。

そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。

  • VBAの基礎を丁寧に、ゼロから分かりやすく解説
  • 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
  • 手元に置いて何度も確認できるため、挫折せずに学習を続けられる

動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。

目次

この記事を見てできるようになること

この記事を読めば、以下のことができるようになります。

スポンサーリンク

Workbooks.Openメソッドの基本を解説

Workbooks.Openメソッドは、指定したワークブック (ファイル)を開くために使用するVBAのメソッドです。

このメソッドを使用することで、エクセルやその他ワークブックをVBAコードから直接開くことができます。

また、ただワークブックを開くだけでなく、「読み取り専用」や「パスワード保護」も開くことができます。

Workbooks.Openメソッドとはどのようなものか解説

Workbooks.Openメソッドの構成・引数

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.Closeメソッド
Workbooks("ファイル名.xlsx").Close

以下の記事で詳しく解説していますので、ぜひ参考にしてください。

あわせて読みたい
エクセルVBAで「Workbooks.Close」を使ってワークブックを保存せずに閉じる方法 「エクセルVBAでワークブック (ファイル) を閉じるにはどうしたらいいんだろう?」このように悩んだことはありませんか? ・VBAで特定のワークブックを閉じたい。・ワー...

ファイルパスを簡単に取得する方法をご紹介

Workbooks.Openメソッドを使用する際は、ファイルパスを正確に指定する必要があります。

ここでは、簡単にファイルパスを取得する方法を紹介します。

ファイルパスを取得する操作

  1. ファイルを選択した状態で「Shift」⁺「右クリック」を押します。
  2. 開いたメニューから「パスのコピー(A)」を選択をします。
ファイルパスを取得する操作

この操作を行うことで、「”C:\サンプル\サンプル1.xlsx”」このような正確なファイルパスを簡単に取得することができます。

Workbooks.Openメソッドを使う際の注意ポイント

Workbooks.Openメソッドを使う際の注意ポイントは、以下の通りとなります。

間違いやすい内容もあるため、注意しましょう。

  • ファイルパスの正確さ
    • ファイルを開くためには、正確なパスを指定する必要があります。
      ファイルパスに誤りがあると、エラーが発生し、ファイルを開くことができません。
      必ず「Shift」+「右クリック」でファイルパスをコピーして使用するようにしましょう。
  • ファイルが既に開いているか確認する
    • ファイルが既に開かれている状態で再度開こうとすると、エラーが発生することがあります
      ファイルを開く前に、対象ファイルが既に開かれているかを確認するコードを追加すると、エラーを防げます。
  • 読み取り専用でのファイル操作
    • 読み取り専用でファイルを開く場合、編集や保存ができません
      そのため、ファイルを誤って編集してしまうことを防ぎたい場合に適していますが、保存が必要な場合は通常モードで開くようにしましょう。
  • パスワード保護されたファイル
    • パスワード保護されたファイルを開く際には、正しいパスワードを指定する必要があります
      パスワードを間違えると、エラーが発生し、ファイルを開けません。
      正確なパスワードを指定するように注意しましょう。
  • ファイルの破損に対する対策
    • 破損したファイルを開く際は、「CorruptLoad 引数」を使って、Excelが提供する修復オプションを試すことができます
      破損したファイルが頻繁にある場合は、このオプションの使用を検討しましょう。
  • オブジェクト変数を使用して、引数を指定する場合はカッコで囲む
    • オブジェクト変数を使って「Workbooks.Open」メソッドを利用する場合、引数を指定する際は、カッコで囲む必要があります。
      例えば、Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)のように記述します。
      カッコで囲まないとエラーが発生するため、この点に注意しましょう。
スポンサーリンク

Workbooks.Openメソッドの使用例をご紹介

ここからは、「Workbooks.Openメソッド」の使用例を紹介します。

どれも実際に動作するコードなので、ぜひ実行してみてください。

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

使用例1: Workbooks.Openメソッドを使用して、ワークブックを開く

Workbooks.Openメソッドを使用して、ワークブックを開く方法を紹介します。

Sub ファイルを開く()
    Workbooks.Open "C:\パス\ファイル名.xlsx"
End Sub

コードの動作概要

STEP
サブルーチンの定義

新しいサブルーチン(プロシージャ)「ファイルを開く」を定義します。

STEP
ワークブックを開く

Workbooks.Openメソッドを使用して、指定したパスにあるExcelファイルを開きます。

STEP
プログラムの終了

ファイルが正常に開かれた後、サブルーチンの処理が終了し、プログラムが次のステップに進みます。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub ファイルを開く()
    • この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
      プロシージャ名は「ファイルを開く」で、このサブルーチンが実行されると、指定されたファイルを開く処理が行われます。
  2. Workbooks.Open “C:\パス\ファイル名.xlsx”
    • Workbooks.Openメソッドを使用して、指定されたファイルパスにあるExcelファイルを開きます
      ここでの「”C:\パス\ファイル名.xlsx”」は、開きたいファイルのフルパスを指定します。
      ファイルパスを指定する際には、ファイルの場所や名前が正しいことを確認してください。
  3. 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

コードの動作概要

STEP
定数を宣言

ファイルのパスを保存する定数「filePath」を定義し、開くべきファイルのパスを指定します。

STEP
読み取り専用でファイルを開く

Workbooks.Openメソッドを使用して、指定したファイルを「読み取り専用」で開きます。

STEP
プログラムの終了

ファイルが正常に読み取り専用で開かれた後、サブルーチンの処理が終了し、プログラムが次のステップに進みます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 読み取り専用でファイルを開く()
    • この行では、新しいサブルーチン(プロシージャ)「読み取り専用でファイルを開く」を定義しています。
      実行されると、指定したファイルを「読み取り専用」で開く操作が行われます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」は定数を定義するために使います。
      定数は、一度設定すると変更できない固定の値です。
      ここでは「filePath」という名前で定数を定義し、その中にファイルのパス(ファイルが保存されている場所)を指定しています。
      この場合、「filePath」は「C:\パス\ファイル名.xlsx」という文字列を持っています。

      定数を使うことで、後からファイルのパスを簡単に変更できるようになります。
      また、パスが間違っているとファイルを開けないので、正確なパスを指定することが重要です。
  3. Workbooks.Open filePath, ReadOnly:=True
    • Workbooks.Open はVBAでエクセルファイルを開くためのメソッドです。
      ここでは、「filePath」で指定したファイルを開きます。
      ReadOnly:=True という引数を指定することで、ファイルを「読み取り専用」で開くことができます
      つまり、このファイルを閲覧することはできますが、編集して保存することはできません。

      読み取り専用でファイルを開くことで、誤ってファイルを変更することを防ぎたい場合に便利です。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  4. End Sub
    • これはサブルーチンの終了を示す行です。
      この行まで処理が実行されたら、サブルーチンの実行が終了します。
      ここで処理が終わり、他のコードに進む準備ができます。

このコードは、指定したワークブックを「読み取り専用」で開くためのシンプルなプロセスを示しています。
読み取り専用で開くと、ワークブックの内容を変更して保存することができないため、誤ってデータを上書きしてしまう心配がありません。

使用例3: オブジェクト変数を使用したワークブックの開き方

オブジェクト変数を使用してワークブックを開く方法について紹介します。

この場合、ワークブックを開いた後さらに別の操作を行う際に便利です。

Sub オブジェクト変数を使用してファイルを開く()

    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)

    '// ここでWbを使用して、さらに別の操作を行う

End Sub

コードの動作概要

STEP
ファイルパスの指定

Const ステートメントを使って開くファイルのパスを指定し、定数として宣言します。

STEP
変数の宣言

Workbook 型のオブジェクト変数「Wb」を宣言し、開くファイルを格納する準備をします。

STEP
ファイルを開く

Workbooks.Open(filePath) を使用して指定されたファイルを開き、そのワークブックを Wb 変数に格納します。

STEP
操作の追加

開いたファイルに対して別の操作を加えるためのスペースを確保します。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub オブジェクト変数を使用してファイルを開く()
    • これは新しいプロシージャ(サブルーチン)を定義する行です。
      Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
      ここでは「オブジェクト変数を使用してファイルを開く」という名前のサブルーチンを定義しています。
      このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
      定数「filePath」に設定された値は、このコードが実行される間は変更されません
      この定数には、開きたいエクセルファイルのパス(場所)が設定されています。
  3. Dim Wb As Workbook
    • 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
      Workbook 型は、エクセルのブック(ファイル)を扱うためのオブジェクト型です。
      ここで宣言された「Wb」というオブジェクト変数は、後で開かれるワークブックを格納するために使われます

      Workbook オブジェクトを変数として保持することで、そのファイルに対して様々な操作を効率よく行うことができます。
  4. Set Wb = Workbooks.Open(filePath)
    • 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
      Workbooks.Open(filePath) は、指定された定数「filePath」のエクセルファイルを開き、その開かれたワークブックを返します。
      「Set」を使ってそのワークブックをオブジェクト変数「Wb」に格納します。
      これにより、オブジェクト変数「Wb」を通じて開いたワークブックにアクセスできます
      このオブジェクト変数を使えば、開いたファイルに対して様々な操作(例えばセルへのデータ入力やシートの削除など)を行うことができます。
  5. ‘// ここでWbを使用して、さらに別の操作を行う
    • ここにはコメントが書かれており、開いたワークブック「Wb」に対して、さらに別の操作を加える場所であることを示しています。
      たとえば、データの追加やフォーマットの変更など、開いたワークブックに対するアクションをここに追加します。
  6. 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

コードの動作概要

STEP
ファイルパスの指定

Const ステートメントで開くファイルのパスを定数「filePath」として宣言します。

STEP
変数の宣言

Workbook 型のオブジェクト変数「Wb」を宣言して、開いたファイルを格納する準備をします。

STEP
ファイルを開く

Workbooks.Open メソッドを使用し、ファイルを読み取り専用 (ReadOnly:=True) で開きます。
その際、 Wb 変数に開いたファイルを格納します。

STEP
操作の追加

開いたファイルに対してさらなる操作を行うためのスペースが確保されています。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub オブジェクト変数を使用して読み取り専用でファイルを開く()
    • これは新しいプロシージャ(サブルーチン)を定義する行です。
      Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
      ここでは「オブジェクト変数を使用して読み取り専用でファイルを開く」という名前のサブルーチンを定義しています。
      このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」を使って定数「filePath」を定義し、ファイルのパスを指定します。
      定数「filePath」に設定された値は、このコードが実行される間は変更されません
      この定数には、開きたいエクセルファイルのパス(場所)が設定されています。
  3. Dim Wb As Workbook
    • 「Dim ステートメント」を使って、「Wb」という名前のオブジェクト変数を Workbook 型で宣言しています。
      Workbook 型は、エクセルのブック(ファイル)を扱うためのオブジェクト型です。
      ここで宣言された「Wb」というオブジェクト変数は、後で開かれるワークブックを格納するために使われます。

      Workbook オブジェクトを変数として保持することで、そのファイルに対して様々な操作を効率よく行うことができます。
  4. Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
    • 「Workbooks.Open メソッド」を使って、先ほど指定したファイルを開いています
      Filename:=filePath は、開くファイルの場所を指定しており、ここでは 変数「filePath」に格納されたパスのファイルを開きます。
      ReadOnly:=True を指定することで、ファイルを読み取り専用(編集できない状態)で開くようにしています
      Set Wb = の部分は、この開いたファイルをオブジェクト変数「Wb」に格納する処理です。
      これで、オブジェクト変数「Wb」を使って開いたファイルに対して操作が可能になります。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  5. ‘// ここでWbを使用して、さらに別の操作を行う
    • 「Set ステートメント」を使って、オブジェクト変数「Wb」に Workbooks.Open(filePath) の結果を代入します。
      Workbooks.Open(filePath) は、指定された定数「filePath」のエクセルファイルを開き、その開かれたワークブックを返します。
      「Set」を使ってそのワークブックをオブジェクト変数「Wb」に格納します。
      これにより、オブジェクト変数「Wb」を通じて開いたワークブックにアクセスできます
      このオブジェクト変数を使えば、開いたファイルに対して様々な操作(例えばセルへのデータ入力やシートの削除など)を行うことができます。
  6. 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

コードの動作概要

STEP
ファイルパスの指定

Const ステートメントで開くファイルのパスを定数「filePath」として宣言します。

STEP
変数の宣言

Workbook 型のオブジェクト変数「Wb」を宣言して、開いたファイルを格納する準備をします。

STEP
ファイルを開く

Workbooks.Open メソッドを使用し、指定されたパスワードを使ってパスワード保護されたファイルを開きます。
開かれたファイルは変数「Wb」に格納されます。

STEP
操作の追加

開いたファイルに対してさらなる操作を行うためのスペースが確保されています。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub パスワードで保護されたファイルを開く()
    • これは新しいプロシージャ(サブルーチン)を定義する行です。
      Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
      ここでは「パスワードで保護されたファイルを開く」という名前のサブルーチンを定義しています。
      このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」を使って定数「filePath」を宣言しています。
      定数は変更できない変数で、この場合、開くファイルのフルパス(ファイルの場所)を文字列で指定しています。
      定数「filePath」に代入された値を基に、VBAが指定されたExcelファイルを開きます。
  3. Dim Wb As Workbook
    • オブジェクト変数「Wb」を Workbook 型として宣しています。
      Workbook 型はExcelのワークブック(Excelファイル)を表すオブジェクトです。
      この変数に、後ほど開かれるExcelファイルを格納します。
  4. Set Wb = Workbooks.Open(Filename:=filePath, Password:=”パスワード”)
    • 「Set ステートメント」を使用して、オブジェクト変数「Wb」に開いたファイルを代入しています。
      「Workbooks.Open メソッド」を使って、指定されたファイルパスのファイルを開きます
      Filename:=filePath は開くファイルのパスを指定しており、Password:=”パスワード” で開く際に使用するパスワードを指定しています
      この行が実行されると、filePath のパスにあるExcelファイルがパスワードを使って開かれ、そのファイルがオブジェクト変数「Wb」に格納されます。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  5. ‘// ここでWbを使用して、さらに別の操作を行う
    • この行はコメントです。コードに影響はありません。
      ここに Wb を使ってファイルに対して別の操作を加えるコードを記述することができます。
      例えば、シートを追加したり、データを入力したりするなどの操作を記述する場所です。
  6. 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

処理結果

使用例6: ファイルが開かれていない場合だけファイルを開く方法の結果

コードの動作概要

STEP
定数と変数の宣言

開くファイルのフルパスを「filePath」に定義します。
「isAlreadyOpen」というブール型変数を使い、ファイルが既に開かれているかどうかを判定します。

STEP
開いているファイルを確認

For Eachループを使って、開かれているすべてのワークブック(Workbooksコレクション内の各ブック)を調べます。
各ワークブックのフルパス(wb.FullName)が指定したファイルパス(filePath)と一致するかを比較します。

STEP
条件分岐で処理を決定

もし開いているファイルと同じパスのファイルが見つかれば、「isAlreadyOpen」を「True」にして処理を中断します。
開いている場合はメッセージボックスでエラーメッセージを表示し、開いていない場合はWorkbooks.Openメソッドを使ってファイルを開きます。

このコードで使用している機能

1行ずつコードを解説

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

この使用例では、VBAを使ってExcelファイルが既に開かれているかを確認し、開いていない場合にのみワークブックを開く処理を行う方法を紹介しました。

この処理により、誤って同じワークブックを二重に開くリスクを防ぎ、業務効率を向上させることができます。

使用例7: FileDialogを使用してワークブックを選択して開く方法

ダイアログを使用して、ワークブックを開く方法について紹介します。

FileDialogを使用すると、ユーザーにワークブックを選択してもらい開くことができます。

ダイアログについて

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

あわせて読みたい
VBAのFileDialog(ファイルダイアログ)を使ってファイル選択・初期フォルダ設定・ファイル名取得を簡単に 「VBAでダイアログボックスを表示して、特定のファイルを選択・保存したりしたいな...」このように思ったことはありませんか? ダイアログボックスで「ファイル」や...

詳細のコードは次の通りです。

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

コードの動作概要

STEP
初期ファイルパスの指定

Const ステートメントで、初期表示されるフォルダのパスを定数「initialPath」として宣言します。

STEP
変数の宣言

変数「filePath」と オブジェクト変数「wb」を宣言します。

STEP
ファイルパスを取得

get_filepath 関数を使って、ダイアログを表示し、ユーザーが選択したファイルのパスを取得します。
取得したパスは filePath に格納されます。

STEP
ファイルを開く

「filePath」が空でないことを確認した後、Workbooks.Open メソッドを使用して指定されたファイルを開きます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub FileDialogを使用してファイルを開く()
    • これは新しいプロシージャ(サブルーチン)を定義する行です。
      Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
      ここでは「FileDialogを使用してファイルを開く」という名前のサブルーチンを定義しています。
      このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
  2. Const initialPath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」を使って定数「initialPath」を宣言しています。
      この定数には、ファイルダイアログを開いたときに最初に表示されるフォルダやファイルのパスが格納されています。
      初期表示のフォルダやファイルを指定するために使用します。
  3. Dim filePath As String
    • 変数「filePath」を文字列型 (String) として宣言しています。
      この変数には、ユーザーが選択したファイルのパスが格納されます。
  4. Dim Wb As Workbook
    • オブジェクト変数「Wb」を Workbook 型として宣言しています。
      この変数には、ユーザーが選択したファイルが開かれた後、そのファイルが格納されます。
      Workbook 型はエクセルファイル全体を扱うために使用されます。
  5. filePath = get_filepath(initialPath)
    • 関数「get_filepath」を呼び出して、ユーザーが選択したファイルのパスを取得し、それを変数「filePath」に格納しています。
      関数「get_filepath」については、下記で動作内容を解説しています。

      「initialPath」を引数として渡すことで、ファイルダイアログが初期表示されるフォルダを指定しています。
  6. If filePath = “” Then Exit Sub
    • ここでは、変数「filePath」が空かどうかを確認しています。
      もしユーザーがファイルを選択しなかった場合、変数「filePath」は空のままになります。
      その場合は「Exit Sub」によってサブルーチンを途中で終了します。
  7. Set wb = Workbooks.Open(filePath)
    • この行で「Workbooks.Open メソッド」を使用して変数「filePath」に格納されたパスのファイルを開き、開いたファイルを「Wb 変数」に格納しています。
      「Set ステートメント」は、オブジェクト変数(ここでは wb)にオブジェクトを代入する際に使います。
  8. End Sub
    • この行でサブルーチンが終了します。これ以降の処理は行われません。

  1. Function get_filepath(initialPath As String) As String
    • この行で、「get_filepath」という新しい関数を定義しています。
      関数は特定の処理を行い、その結果を返します。
      ここでは、ファイルダイアログを表示し、選択されたファイルのパスを返す処理を行います。
      引数として「initialPath」を受け取り、それをファイルダイアログの初期フォルダに設定します。
  2. Dim fd As FileDialog
    • 「fd」という変数を FileDialog 型として宣言しています。
      この変数にはファイル選択ダイアログが格納されます。
  3. Set fd = Application.FileDialog(msoFileDialogFilePicker)
    • 「Set ステートメント」で、変数「fd」にファイル選択ダイアログを代入しています。
      Application.FileDialog(msoFileDialogFilePicker) は、ファイルを選択するためのダイアログを作成します。
  4. With fd
    • 「With ステートメント」は、fd オブジェクトに対して複数の操作を簡潔に書くための構文です。
      ここから「End With」までの間に、fd オブジェクトに対する操作が行われます。
  5. .InitialFileName = initialPath
    • ダイアログが開かれたときに、最初に表示されるフォルダやファイルのパスを指定しています。
      ここでは、関数の引数として渡された「initialPath」が設定されています。
  6. .Title = “ファイルを選択してください”
    • ファイルダイアログのタイトルバーに表示されるメッセージを設定しています。
      ユーザーがファイルを選択するためのダイアログであることが明示されています。
  7. .Filters.Add “Excelファイル”, “*.xlsx; *.xlsm”, 1
    • ダイアログで表示するファイルの種類をフィルタリングしています。
      ここでは、拡張子が「.xlsx」と「.xlsm」のエクセルファイルだけを表示するように設定しています。
  8. If .Show = -1 Then
    • この行では、ファイルダイアログが表示された後、ユーザーがファイルを選択して「開く」を押したかどうかを確認しています。
      「.Show メソッド」は、ユーザーが「OK」を押した場合に「-1」を返します。
  9. get_filepath = .SelectedItems(1)
    • ユーザーが選択したファイルのパスを取得し、それを「get_filepath関数」の戻り値として設定します。
      「.SelectedItems(1)」 で、ユーザーが選んだ最初のファイルのパスを取得しています。
  10. Else
    • もしユーザーがファイルを選択せずにダイアログを閉じた場合の処理がこの後に続きます。
  11. MsgBox “ファイルが選択されませんでした”
    • ユーザーがファイルを選択しなかった場合に表示されるメッセージボックスを設定しています。
      「ファイルが選択されませんでした」とメッセージが表示されます。
  12. get_filepath = “”
    • ユーザーがファイルを選択しなかった場合、関数「get_filepath 」は空の文字列を返すように設定しています。
  13. End If
    • 「If ステートメント」の終了を示しています。
  14. End With
    • With ステートメントの終了を示しています。
      これ以降、fd に対する操作はここでは行われません。
  15. Set fd = Nothing
    • 変数「fd」に格納されたファイルダイアログオブジェクトを解放しています。
      これにより、不要になったオブジェクトがメモリから解放されます。
  16. End Function
    • この行で関数「get_filepath」が終了します。
      これ以降の処理は行われず、関数の戻り値が返されます。

このコードを実行すると、ファイル選択ダイアログが表示され、ユーザーが選択したワークブックを開くことができます。
この方法は、冗長なコードを避け、機能を分離することでコードの再利用性を高めます。

スポンサーリンク

この記事のまとめ

エクセルVBAでの「Workbooks.Openメソッド」を活用することで、ワークブックをプログラムから直接開く方法を解説しました。

再度ポイントのおさらいを行いましょう。

ポイントのおさらい

  • Workbooks.Openメソッドの基本的な使い方を理解する
  • ファイルパスを簡単に取得する方法
    • ファイルパスを手動で入力するのはミスの元です。
      ファイルパスを簡単に取得するには、エクスプローラーでファイルを選択して「Shift + 右クリック」をし、「パスのコピー」を選択すると、正確なパスを取得できます。

      ⇒ 「ファイルパスを簡単に取得する方法」もう一度見る。
  • Workbooks.Openメソッドを使う際の注意ポイント
    • Workbooks.Openメソッドを使用する際は、ファイルパスの正確さやファイルの状態確認が重要です。
      誤ったパスや既に開かれているファイルがあるとエラーが発生します。
      また、読み取り専用モードやパスワード保護にも注意し、適切な方法で開くことがトラブル防止につながります。

      ⇒ 「Workbooks.Openメソッドを使う際の注意ポイント」もう一度見る。
  • 使用例を通じて、実践的なファイル操作方法を学ぶ
    • 使用例を通じて、読み取り専用でファイルを開く方法オブジェクト変数を用いた操作パスワード保護されたファイルの開き方を学びました。
      また、FileDialogを使用してユーザーがワークブックを選択する方法も実践的な操作として紹介しています。

      ⇒ 「Workbooks.Openメソッドの使用例」もう一度見る。

基本的なワークブックの開き方から、読み取り専用での操作、パスワード保護されたファイルの処理、さらにはファイルダイアログを使ったファイル選択まで、業務で活用できる多様な方法を学びました。

この記事の使用例を繰り返し実践することで、より柔軟にVBAでのファイル操作が行えるようになります。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「Python...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次