今回はExcelVBAでのファイルをオープンする方法についての説明になります。
目次
- 1.ファイルをオープンする方法
- 2.同じフォルダ内のファイルをオープンする方法
- 3.オープンしたワークブックやアクティブファイル、アクティブシートを変数設定する方法
- 4.ファイル名を指定してファイルをオープンする方法
- 5.ファイルの存在を確認してからファイルをオープンする方法
1.ファイルをオープンする方法
単にファイルをオープンする場合には、以下のようにOpenを使用します。
Workbooks.Open "C:\test.xlsx"
これにより、Cドライブ直下の「test.xlsx」ファイルがオープンします。
2.同じフォルダ内のファイルをオープンする方法
自ファイルと同じフォルダ内のファイルをオープンする場合には、
Workbooks.Open ThisWorkbook.Path & "\test.xlsx"
のようにします。
3.オープンしたワークブックやアクティブファイル、アクティブシートを変数設定する方法
また、以下のようにオープンしたワークブックを変数に指定すると、ファイルをオープンした後に変数経由でワークブックを操作することができます。
メソッドの戻り値を使用する場合は引数を()で囲みます。
Dim wb As Workbook Set wb = Workbooks.Open(Filename:="C:\test.xlsx")
以下のようにすると、「test.xlsx」をオープンし、その中の1枚目のシートのA1からC3までをコピーして、自身のマクロ記載のブックの1枚目のシートのA1からC3に貼りつけています。
Sub test() Dim wb As Workbook Set wb = Workbooks.Open(Filename:="C:\test.xlsx") 'オープンしたファイルtest.xlsxから、マクロを記載したこのブックにコピー wb.Worksheets(1).Range("A1:C3").Copy _
Destination:=ThisWorkbook.Worksheets(1).Range("A1:C3") End Sub
オープンした後に、以下のようにブックやシートの名前を取得することで、変数にブックやシートの名前を設定することができます。
Workbooks.Open "C:\test.xlsx"
AFILE = ActiveWorkbook.Name: ASHT = ActiveSheet.Name
これらを使用して、たとえば、
Sub test()
Workbooks.Open "C:\test.xlsx"
AFILE = ActiveWorkbook.Name: ASHT = ActiveSheet.Name For i = 1 To 10 Sheets(ASHT).Cells(i, 1) = i Next i
End Sub
とすることで、「test.xlsx」ファイルをオープンし、そのファイル名と(オープンした時に選択されている)シート名を取得し、それぞれAFILE、ASHTという変数名をつけます。
その後、シート名「ASHT」の(1,1)~(10,1)にそれぞれ行番号と同じ番号を入力しています。
4.ファイル名を指定してファイルをオープンする方法
ファイルをオープンする方法のもう1つはファイル名を指定して開く方法です。
ファイル名を指定してファイルをオープンする場合には、Application.GetOpenFilename() を使用します。
たとえば以下のようにすると、
Sub test() Dim fileName As String fileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*") If fileName <> "False" Then Workbooks.Open fileName else Exit Sub End If End Sub
Application.GetOpenFilename()にてファイルを開くダイアログボックスが表示されますので、ユーザーがファイルを選択して開くやり方になります。
ダイアログボックスでファイルを選択せずキャンセルされた場合にはFalseが返りますので「Exit Sub」でサブルーチンを抜けて(終了して)います。
ちなみに、この例の場合は、2行目でファイルの種類を「*.xls*」としていますので、ダイアログボックスにはすべてのExcelファイルの種類が表示されますが、以下のようにすると、拡張子が「xlsx」のみのファイルだけが表示されます。
fileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
5.ファイルの存在を確認してからファイルをオープンする方法
最後の方法は、ファイルの存在を確認してからオープンする方法です。
以下の例ではDir()関数を使用してファイルの有無を確認してからファイルオープンしています。
ファイルが存在しなかった場合には、空文字が返されますので、その場合は「ファイルが存在しません」メッセージを表示し、そうでなかった場合にファイルをオープンしています。
Sub test() If Dir("C:\test.xlsx") <> "" Then Workbooks.Open "C:\test.xlsx" Else MsgBox "ファイルが存在しません" End If End Sub
以上がExcel VBAでファイルをオープンする方法になります。