Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Excel VBA】ファイルをオープンする方法


今回はExcelVBAでのファイルをオープンする方法についての説明になります。

 

 

 

目次

 

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でファイルをオープンする方法になります。