即効テクニック

ファイル操作関連のテクニック

ブックを開く(Openメソッド)

(Excel 2013/2016)
引数FileNameで指定したブックを開きます。パスを含むファイル名を指定した場合には、指定したフォルダのファイルを開き、パスを省略した場合には、カレントフォルダのファイルを開く動作になります。指定する引数はたくさんありますが、全てを同時に使うことはあり得ません。いくつかサンプルを示しますので、各引数の意味するところを理解してください。


  構文  Object.Open(FileName, UpdateLinks, ReadOnly, Format, Password, 
                    WriteResPassword, IgnoreReadOnlyRecommended, Origin, 
                    Delimiter, Editable, Notify, Converter, AddToMRU)


  設定項目          内容
  FileName          開くブックのファイル名を指定 [省略不可]
  UpdateLinks       リンクの更新方法を指定(表A参照) [省略可能]
  ReadOnly          Trueで読み取り専用で開く。規定値はFalse [省略可能]
  Format            テキストファイルを開く時の区切り文字指定 [省略可能]
  Password          読み取りパスワードを指定 [省略可能]
  WriteResPassword  書き込みパスワードを指定 [省略可能]
  IgnoreReadOnlyRecommended  Trueで、読み取り推奨メッセージを非表示にする [省略可能]
  Origin            日本語版Excelでは指定は無効。テキストファイルの改行コード
                    を正しく認識するために指定 [省略可能]
  Delimiter         開くファイルがテキストファイルで、引数Formatに6が指定されている
                    場合に、区切り文字を指定 [省略可能]
  Editable          Excel 4.0 のアドイン、テンプレートの開き方を指定 [省略可能]
  Notify            ReadOnlyにFalseを指定したが、書き込みモードで開けなかった場合の
                    処理を指定 [省略可能]
  Converter         最初に使うファイルコンバータのインデックス番号を指定 [省略可能]
  AddToMRU          Trueで最近使ったファイルリストに追加 [省略可能]


次のサンプル1を見てください。


●サンプル1●

Sub OpenSamp1()
    Dim myFLName As String

    myFLName = ThisWorkbook.Path & "\ブック操作\サンプル1.xls"  '---(1)
    MsgBox "開くファイルは「" & myFLName & "」です"
    Workbooks.Open Filename:=myFLName, ReadOnly:=True           '---(2)

End Sub


引数UpdateLinksでは、リンクの更新方法を指定します。次の表Aを参照してください。


・表A:引数UpdateLinksで指定するリンクの更新方法

値      外部参照        リモート参照
0       更新しない      更新しない
1       更新する        更新しない
2       更新しない      更新する
3       更新する        更新する


次のサンプル2は、外部参照、リモート参照ともに更新せずに、前回ファイルが保存された状態で開きます。


●サンプル2●
Sub OpenSamp2()
    Dim myFLName As String

    ChDir ThisWorkbook.Path & "\ブック操作\"   '---対象ブックのフォルダへ移動
    myFLName = "サンプル2.xls"                 '---ファイル名だけ指定
    Workbooks.Open Filename:=myFLName, UpdateLinks:=0  '---リンクを更新せずに開く

End Sub
パスワードで保存されたブックを開く時には、サンプル3のように記述します。


●サンプル3●
Sub OpenSamp3()
    Dim myFLName As String

    myFLName = ThisWorkbook.Path & "\ブック操作\サンプル4.xls"
    Workbooks.Open Filename:=myFLName, Password:="abcd", _
        writerespassword:="efgh", AddToMru:=True

End Sub
読み取りパスワード"abcd"、書き込みパスワード"efgh"でブックを開きます。さらに、引数AddToMruにTrueを指定することで、最近使用したファイル一覧にファイル名を追加します。
 テンプレートの開き方に関しては引数Editableで指定します。Trueの場合は編集するためにファイルを開き、Falseの場合はテンプレートを元にして新規ファイルを作成します。規定値はFalseです。


●ポイント●
引数Format、Delimiterではテキストファイルを開く際の区切り文字を指定しますが、テキストファイルを開くにはより細かい設定の可能なOpenTextメソッドを使用した方がよいでしょう。なお、CSVファイルはカンマ区切りのテキストファイルですが、引数Format、Delimiterの指定は必要ありません。次のサンプル4は指定した名前のCSVファイルを開きます。


●サンプル4●
Sub OpenSamp4()
    Dim myFLName As String

    myFLName = ThisWorkbook.Path & "\ブック操作\test.csv"
    Workbooks.Open Filename:=myFLName

End Sub

●注意●
ある程度の大きさ以上のCSVファイルは、読み込みに非常に時間がかかります。
また、「001」のような文字列を読み込んだ場合には、数値の「1」と解釈されて取り込まれてしまいます。こういったケースを回避するには、ファイルの拡張子をCSV以外に変更して、OpenTextメソッドを使用してください。