エクセルVBAでファイルを開く方法 | Workbooks.Openメソッドの使い方

Workbooks.openについて VBA

おつかれさまです!

エクセルVBAでファイルを開く方法に悩んだことはありませんか?

このようなことがしたい
  • セルに設定したパスのファイルを開きたい。

    悩みpoint1について
  • ダイアログを使用してファイルを選択したうえで開きたい。

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

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

使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。
気になる部分だけでもぜひご覧いただければと思います。

基本的な使い方から、実際の業務で役立つ応用例まで、分かりやすく解説していきます。

ぜひ最後までお読みください。


【 この記事の概要 】

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

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

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

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

Workbooks.Openメソッドの基本

まずは、VBAでファイルを開く基本的な方法について説明します。

Workbooks.Openメソッドとは?

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

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

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

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

Workbooks.Openの構成

引数が多すぎて訳が分かりませんね。。。
安心してください。よく使用するものだけ、覚えたら問題有りません。
※次項の使用例に、使用頻度の多いものをまとめています。

以下のテーブルに代表的な引数をまとめました。

引数省略可能か説明デフォルト値
Filename必要開くファイルのパスを指定します。なし
ReadOnly省略可能ファイルを読み取り専用で開くか
どうかを指定します。
読み取り専用はTrueを指定します。
False
Password省略可能パスワード保護をされたファイルを
開くためのパスワードを指定します。
なし
WriteResPassword省略可能書き込み保護をされたファイルを
編集するためのパスワードを
指定します。
なし
IgnoreReadOnlyRecommended省略可能ファイルを読み取り専用で開くことを
推奨する警告を無視するかどうかを
指定します。
読み取り専用メッセージを非表示に
する場合はTrueを指定します。
False
CorruptLoad省略可能ファイルが破損している場合の
読み取り方法を指定します。
使用できる定数は、xlNormalLoad、
xlRepairFile、xlExtractData に
なります。
xlNormalLoad

実際のコードは、次のように記述します。

Sub OpenWorkbookExample()
    '// ファイルパスとパスワードを指定
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Const password As String = "mypassword" ' ファイルのパスワード

    '// ファイルを読み取り専用かつパスワード付きで開く
    Workbooks.Open Filename:=filePath, ReadOnly:=True, Password:=password, IgnoreReadOnlyRecommended:=True

    MsgBox "ファイルを読み取り専用で開きました。"

End Sub

より詳しい情報は、Microsoft公式 – Workbooks.Open メソッドを参照してみてください。

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

Workbooks.Openメソッドを使用する際は、ファイルパスが必要です。
ファイルのパスを簡単に取得したい場合は、次のように行います。


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

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

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

Workbooks.Openメソッドの使用例

ここからは、「Workbooks.Openメソッド」の使用例を紹介します。
どれも実際に動作するコードなので、ぜひ実行してみてください。

使用例1: Workbooks.Openメソッドを使用して、ファイルを開く

Workbooks.Openメソッドを使用して、ファイルを開く方法を紹介します。

Sub ファイルを開く()
    Workbooks.Open "C:\パス\ファイル名.xlsx"
End Sub
動作概要
  • STEP1
    サブルーチンの定義

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

  • STEP2
    ファイルを開く

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

  • STEP3
    プログラムの終了

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

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

  • なし

詳細解説

コードの詳細
  1. Sub ファイルを開く()
    • この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
      プロシージャ名は「ファイルを開く」で、このサブルーチンが実行されると、指定されたファイルを開く処理が行われます。
  2. Workbooks.Open “C:\パス\ファイル名.xlsx”
    • Workbooks.Openメソッドを使用して、指定されたファイルパスにあるExcelファイルを開きます
      ここでの「”C:\パス\ファイル名.xlsx”」は、開きたいファイルのフルパスを指定します。
      ファイルパスを指定する際には、ファイルの場所や名前が正しいことを確認してください。
  3. End Sub
    • この行は、サブルーチン「ファイルを開く」の終わりを示します。
      指定されたファイルを開く処理が終了し、プログラムは次に実行するステップに進みます。

ファイルパスを間違えないように注意することが大切です。
正確なパスを指定すれば、簡単にファイルを開くことができます。

このサブルーチンは、VBAを使って特定のパスにあるExcelファイルを開くための最も基本的な方法を示しています。
Workbooks.Openメソッドは、ファイルをプログラム的に開く際に頻繁に使用されるため、Excel VBAの操作において非常に重要なスキルです。

使用例2: 読み取り専用でファイルを開く方法

読み取り専用でファイルを開く方法について紹介します。

引数にReadOnly:=Trueを指定することで、読み取り専用でファイルを開くことができます。
元のエクセルファイルを変更したくない場合に、よく使用されます。

Sub 読み取り専用でファイルを開く()
    Const filePath As String = "C:\パス\ファイル名.xlsx"

    Workbooks.Open filePath, ReadOnly:=True

End Sub
動作概要
  • STEP1
    定数を宣言

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

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

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

  • STEP3
    プログラムの終了

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

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

詳細解説

コードの詳細
  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
動作概要
  • STEP1
    ファイルパスの指定

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

  • STEP2
    変数の宣言

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

  • STEP3
    ファイルを開く

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

  • STEP4
    操作の追加

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

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

詳細解説

コードの詳細
  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
動作概要
  • STEP1
    ファイルパスの指定

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

  • STEP2
    変数の宣言

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

  • STEP3
    ファイルを開く

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

  • STEP4
    操作の追加

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

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

詳細解説

コードの詳細
  1. Sub オブジェクト変数を使用して読み取り専用でファイルを開く()
    • これは新しいプロシージャ(サブルーチン)を定義する行です。
      Sub ステートメントは、後で実行できる一連の処理をまとめるために使われます。
      ここでは「オブジェクト変数を使用して読み取り専用でファイルを開く」という名前のサブルーチンを定義しています。
      このサブルーチンを呼び出すと、指定された一連の操作が実行されます。
  2. Set Wb = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
    • 「Workbooks.Open メソッド」を使って、先ほど指定したファイルを開いています
      Filename:=filePath は、開くファイルの場所を指定しており、ここでは 変数「filePath」に格納されたパスのファイルを開きます。
      ReadOnly:=True を指定することで、ファイルを読み取り専用(編集できない状態)で開くようにしています
      Set Wb = の部分は、この開いたファイルをオブジェクト変数「Wb」に格納する処理です。
      これで、オブジェクト変数「Wb」を使って開いたファイルに対して操作が可能になります。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  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を使用して、さらに別の操作を行う
    • ここは実際の処理を記述する部分です。
      例えば、開いたファイルにデータを書き込む、シートをコピーするなどの操作をこの場所に追加できます。
      // はコメントの記号で、この行はプログラムの動作には影響を与えません。
      あくまで、この場所で追加の操作を行うことを示すガイドです。
  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
動作概要
  • STEP1
    ファイルパスの指定

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

  • STEP2
    変数の宣言

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

  • STEP3
    ファイルを開く

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

  • STEP4
    操作の追加

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

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

詳細解説

コードの詳細
  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のプログラムは次の指示に進むか、すべての処理が終了します。

このサブルーチンは、パスワード保護されたExcelファイルを開く方法を紹介します。
Workbooks.Open メソッドを使用し、パスワードを指定してファイルを開きます。
ファイルが開かれると、Wb というオブジェクト変数に格納され、さらにそのファイルに対して操作が行えるようになります。

使用例6: FileDialogを使用してファイルを選択して開く方法

ダイアログを使用して、ファイルを開く方法について紹介します。

FileDialogを使用すると、ユーザーにファイルを選択してもらい開くことができます。

ダイアログについて

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

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

Sub FileDialogを使用してファイルを開く()
    Const initialPath As String = "C:\Users\mkrsk\OneDrive\ブログ\WordPress\画像\VBA\workbooks.open\テストエクセル.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
動作概要
  • STEP1
    初期ファイルパスの指定

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

  • STEP2
    変数の宣言

    filePath 変数と wb(Workbook型のオブジェクト変数)を宣言します。

  • STEP3
    ファイルパスを取得

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

  • STEP4
    ファイルを開く

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

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

詳細解説

コードの詳細
  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でのファイル操作が行えるようになります。

タイトルとURLをコピーしました