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メソッドが失敗しました。」
関連の記事