Excel VBAの別のエクセルファイルを開くサンプルです。
目次
サンプル | Openメソッド |
フォルダとファイル名を指定+読み込む | |
同じフォルダにあるエクセルファイルを指定+書き込む | |
ファイルがあるか存在確認する | |
ダイアログでファイルを開く | |
マクロ実行中に画面の更新を止める |
Openメソッド
Open(パラメータ) |
- エクセルのファイルを開きます。
- 戻り値は、開いているファイルのオブジェクトです。
- パラメータは各種あります。公式サイトを参照下さい。
- 以下は、MicrosoftのOpenメソッドのリンクです。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open
フォルダとファイル名を指定+読み込む
Sub test1()
On Error GoTo Exception
Dim wb As Workbook
Dim fileName As String
fileName = "test1.xlsx"
Set wb = Workbooks.Open("D:\Test1\" & fileName)
Debug.Print (wb.Worksheets("Sheet1").Cells(1, 1).Value)
wb.Close
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub
2行目のOn Error GoToは、エラーが発生した時16行目に処理が移ります。
8行目は、ファイルを読み取り専用で開きます。
10行目は、開いたファイルのsheet1のA1の値を取得して表示します。
12行目はファイルを閉じています。
14行目で処理を終了します。Exit Subがないと16行目以降も実行されてしまうので必要です。
同じフォルダにあるエクセルファイルを指定+書き込む
vbaを実行するファイルと同じフォルダにあるファイルを指定する場合は、ThisWorkbook.Pathを使用します。
Sub test1()
On Error GoTo Exception
Dim wb As Workbook
Dim fileName As String
fileName = "test1.xlsx"
Set wb = Workbooks.Open(ThisWorkbook.Path & "/" & fileName)
wb.Worksheets("Sheet1").Cells(1, 1).Value = "テスト"
Application.DisplayAlerts = False
wb.Save
wb.Close
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub
8行目は、ThisWorkbook.Pathで、vbaを実行するファイルと同じフォルダにあるファイルを指定しています。
10行目は開いたファイルに値を書き込んでいます。
12行目は、保存時に出るアラートを表示させないようにしています。
13,14行目は、保存しファイルを閉じています。
ファイルがあるか存在確認する
dirでファイルの存在確認ができます。
Sub test1()
Dim folderName As String
Dim fileName As String
folderName = "D:\Test1\"
fileName = "test1.xlsx"
If dir(folderName & fileName) = "" Then
MsgBox "ファイルが存在しません"
End If
End Sub
ダイアログでファイルを開く
GetOpenFilenameメソッドでダイアログが開きます。
Sub test1()
Dim wb As Workbook
Dim fileName As String
fileName = Application.GetOpenFilename("エクセルファイル(*.xlsx),*.xls?")
Set wb = Workbooks.Open(fileName)
Debug.Print (wb.Worksheets("Sheet1").Cells(1, 1).Value)
wb.Close
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub
6行目は、GetOpenFilenameでダイアログを開きます。
8行目は、取得したファイルをopenメソッドで開きます。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.getopenfilename
マクロ実行中に画面の更新を止める
マクロでファイルを開いたり閉じたりすると画面がちらつきますが、
ScreenUpdatingプロパティで画面の更新を止めることができます。
Sub test1()
Application.ScreenUpdating = False
Dim wb As Workbook
Set wb = Workbooks.Open("D:\Test1\test1.xlsx")
wb.Close
Application.ScreenUpdating = True
End Sub
3行目は、画面の更新を止めています。
11行目は、画面の更新の停止を解除しています。
以下は、MicrosoftのApplication.ScreenUpdatingのリンクです。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.screenupdating
関連の記事