Excel VBA ファイルとシート操作のサンプル

Excel VBAのファイルとシート操作のサンプルです。

目次

ファイル 自ファイルのパスとファイル名を取得する
  ファイルが存在するか確認する(dir)
シート シートを選択する
  シート名を取得する
  シートを作成する(add)
  シート名を変更する
  シートが存在するか確認する
  シートを削除する(Delete)
  シートをクリアする(Cells.Clear)
  シートを指定して処理をまとめる(With)
  別シートのセルを選択する(ActivateとSelect)

自ファイルのパスとファイル名を取得する

Sub test1()

    pathName = ActiveWorkbook.Path
    Debug.Print pathName 'D:\Test1
    
    fileName = ActiveWorkbook.Name
    Debug.Print fileName 'Book1.xlsm
    
End Sub

3行目は、自ファイルのパスを取得します。
6行目は、自ファイルのファイル名を取得します。

ファイルが存在するか確認する(dir)

Sub test1()

    pathName = "D:\Test1\Book1.xlsm"
    
    If dir(pathName) <> "" Then
        Debug.Print "ファイルあり"
    End If

End Sub

5行目は、dir関数でファイルを確認しています。

シートを選択する

Sub test1()

    Sheets("Sheet2").Select

    Workbooks("book1.xlsm").Sheets("sheet3").Select
    
End Sub

Sheetsでシート名を選択します。
3行目は、自ブック名も指定しています。

シート名を取得する

Sub test1()

    sheetName = ActiveSheet.Name
    Debug.Print sheetName 'Sheet1

    For i = 1 To Worksheets.Count
        Debug.Print Worksheets(i).Name
    Next
    
End Sub

3行目は、現在のアクティブなシート名を取得します。
6,7行目は、for文ですべてのシート名を取得します。

シートを作成する(add)

Sub test1()
    
    '先頭にシートを追加
    Worksheets.Add

    '最後尾にシートを追加
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    
    'sheet1の前にシートを追加
    Worksheets.Add before:=Worksheets("sheet1")
    
    'sheet1の後にシートを追加
    Worksheets.Add after:=Worksheets("sheet1")
End Sub

追加したシートがアクティブシートになります。

シート名を変更する

Sub test1()
    
    ActiveSheet.Name = "テスト1"
    
    Worksheets("sheet2").Name = "テスト2"
    
    Worksheets(3).Name = "テスト3"

End Sub

7行目は、3つめのシート名を変更します。

シートが存在するか確認する

Sub test1()

    For Each wksheet In Worksheets
        If wksheet.Name = "sheet1" Then
            Debug.Print "シートあり"
        End If
    Next

End Sub

3行目は、For Each文でループさせてシート名を確認しています。

シートを削除する(Delete)

Sub test1()

    Application.DisplayAlerts = False '警告のメッセージを表示しない
    
    Sheets("sheet1").Delete
    'Sheets(1).Delete '1つめのシートを削除する
    
    Application.DisplayAlerts = True  '警告のメッセージを表示する

End Sub

3,8行目は、シート削除時に表示される以下のダイアログ表示制御です。

シートをクリアする(Cells.Clear)

Sub test1()

    Sheets("Sheet1").Cells.Clear
    'ActiveSheet.Cells.Clear
    
End Sub

3行目は、指定したシートをクリアします。
注:オートフィルタがある場合は、1回でクリアされません。

シートを指定して処理をまとめる(With)

Sub test1()

    With Worksheets("sheet3")
        .Range("a1").Value = "赤"
        .Range("c1").Value = "青"
    End With
    
    Sheets("sheet3").Range("a2").Value = "緑"
        
End Sub

現在、sheet1がアクティブな状態とします。
3行目は、Withで別シート名を指定しています。
4,5行目のように、シート名の指定が不要になります。
Withを使用しない場合は、8行目のようにシート名の指定が必要です。

別シートのセルを選択する(ActivateとSelect)

Sub test1()
    
    With Worksheets("sheet3")
        .Activate
        .Range("e7").Select
    End With
   
End Sub

現在、sheet1がアクティブな状態とします。
3行目でsheet3を指定し、5行目のSelectでセルを指定します。
ポイントは、4行目のActivateです。
Activateがない場合は、以下のエラーが発生します。
「RangeクラスのSelectメソッドが失敗しました。」

関連の記事

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

△上に戻る