【Excel VBAでエクセルファイルを開く・閉じる方法】

ExcelVBA

自動化の一歩として、「エクセルファイルを自動で開いたり、閉じたりすることでデータの集計処理を効率化したい。」といったニーズがあると思います。

この記事では、エクセルファイルの読み書きの前段である、ファイルの開き方と閉じ方について解説します。

エクセルファイルを開く方法

エクセルファイルを開く方法として、以下の方法が考えられます。

  1. ファイルをユーザに指定させる方法
  2. フォルダ内のエクセルファイルをすべて処理させる方法

今回は上記の2点について、メリットとデメリットを含めて説明します。

ファイルをユーザに指定させる方法

Excel VBAでエクセルファイルを開く・閉じる方法で最も一般的な方法は、ファイルをユーザーに指定させる方法です。この方法を使用すると、ユーザーが開くファイルを選択することができます。以下のコードを使用して、ユーザーにファイルを指定するダイアログボックスを表示することができます。

Excelファイルを閉じる方法は、基本的には開く方法と同じです。Excel VBAでは、Workbook.Closeメソッドを使用して、開いたExcelファイルを閉じることができます。

Sub CloseExcelFile()
    Dim FilePath As String
    Dim wb As Workbook
    
    FilePath = Application.GetOpenFilename("Excelファイル (*.xlsx),*.xlsx")
    
    If FilePath <> False Then
        Set wb = Workbooks.Open(FilePath)
        
        ' ファイルの処理
        
        wb.Close SaveChanges:=False ' 保存しないで閉じる
    End If
End Sub

このコードでは、Application.GetOpenFilename()メソッドを使用して、ファイルを指定するダイアログボックスを表示しています。ユーザーがファイルを選択すると、ファイルのパスがfilePath変数に割り当てられます。そして、Ifステートメントを使用して、filePathFalseでない場合にファイルを開きます。

Workbook.Closeメソッドには、引数としてSaveChangesを指定することができます。この引数にTrueを指定すると、変更内容を保存して閉じることができます。一方、Falseを指定すると、変更内容を破棄して閉じることができます。

以下にこの方法のメリットと、デメリットについて記載します。

【メリット】

この方法の最大のメリットは、ユーザーが開くファイルを選択できることです。このため、ファイルの場所や名前が変更されていても、ユーザーが手動でファイルを選択することができます。

【デメリット】

この方法の最大のデメリットは、ユーザーが選択するファイルの場所や名前がプログラムによって制御できないことです。また、ユーザーが誤って別のファイルを選択する可能性があります。

フォルダ内のエクセルファイルをすべて処理させる方法

もう一つの方法は、Dir関数を使用する方法です。Dir関数は、指定されたフォルダ内のファイル名を取得します。以下のコードを使用して、指定されたフォルダ内のすべてのExcelファイルを開くことができます。

Sub SaveAndCloseExcelFile()
    Dim folderPath As String
    Dim fileName As String
    Dim wb As Workbook
    
    folderPath = "C:\Users\UserName\Documents\Excel Files\"
    fileName = Dir(folderPath & "*.xlsx")
    
    Do While fileName <> ""
        Set wb = Workbooks.Open (folderPath & fileName)

        ' ファイルの処理
        
        fileName = Dir()
    Loop
    
    wb.Close SaveChanges:=True, Filename:=FilePath ' 保存して閉じる
    
End Sub

このコードでは、Dir関数を使用して、指定されたフォルダ内の最初のExcelファイルの名前をfileName変数に割り当てます。そして、Do Whileループを使用して、順にファイルを開きます。Dir()関数を使用すると、次のExcelファイルの名前を取得できます。ループは、フォルダ内のすべてのExcelファイルを開くまで続きます。

また、Workbook.Closeメソッドには、引数としてFilenameを指定することもできます。この引数にファイル名を指定することで、ファイルを保存しながら閉じることができます。

以下にこの方法のメリットと、デメリットについて記載します。

【メリット】

この方法の最大のメリットは、プログラムで指定されたフォルダ内のすべてのExcelファイルを自動的に開くことができることです。また、ファイルの場所や名前を手動で変更する必要がなく、自動的に検索されます。

【デメリット】

この方法の最大のデメリットは、プログラムで指定されたフォルダ内のすべてのExcelファイルを開くため、誤って不必要なファイルを開いてしまう可能性があることです。

まとめ

以上のように、それぞれの方法にはメリットとデメリットがあります。どちらの方法を使用するかは、プログラムの目的や使用方法に応じて異なります。

ユーザーにファイルを選択してもらう必要がある場合は、ファイルをユーザーに指定させる方法を使用することが適しています。
一方、プログラムで指定されたフォルダ内のすべてのExcelファイルを自動的に開く必要がある場合は、Dirを利用した方法を使用することが適しています。

それぞれの方法にはメリットとデメリットがあるため、プログラムの目的や使用方法に応じて、最適な方法を選択することが重要です。