Excel VBA 別のエクセルファイルを開く

Excel VBAの別のエクセルファイルを開くサンプルです。

目次

サンプル Openメソッド
  フォルダとファイル名を指定+読み込む
  同じフォルダにあるエクセルファイルを指定+書き込む
  ファイルがあるか存在確認する
  ダイアログでファイルを開く
  マクロ実行中に画面の更新を止める

Openメソッド

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, ReadOnly)
    
    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, ReadOnly)
     
    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", ReadOnly)
     
    wb.Close
    
    Application.ScreenUpdating = True
    
End Sub

3行目は、画面の更新を止めています。
11行目は、画面の更新の停止を解除しています。

以下は、MicrosoftのApplication.ScreenUpdatingのリンクです。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.screenupdating

関連の記事

Excel VBA セルに値を設定/取得するサンプル
Excel VBA セルの値をテキストに出力するサンプル

△上に戻る