エクセルのVBマクロで新しいシートを連番生成
エクセルで新しいシートを連続作成するVBマクロ。
- エクセルのVBAでシート(sheet)を作成する。
- エクセルのVBAでシートを任意のシートの後に作成する。
#引数なしでWorksheets.Addすると一番左に作成されて後で面倒。 - エクセルのVBAでシート(sheet)のタブ名を設定する。
- エクセルのVBAであるシートの値を別のシートにコピーする。
Sub CreateNewSheet() Dim StrLastSheetName As String StrLastSheetName = "最後のシート名(初期値)" 'Sheetを150個生成する For i = 1 To 150 Dim NewWorkSheet As Worksheet Dim strName As String '新シートを作成。"StrLastSheetName"で指定された 'シートの後に作成し、それ以降は連続させる。 Set NewWorkSheet = Worksheets.Add(after:= Worksheets(StrLastSheetName)) '新シート名の生成&設定処理。適宜書き換えてください。 strName = "aaaa" & Trim(Str(i)) NewWorkSheet.Name = strName '書式内容をシート"TEMPLATE"からコピー。適宜書き換えてください。 Sheets("TEMPLATE").Select ActiveWindow.SmallScroll Down:=15 Cells.Select Range("A62").Activate Selection.Copy Sheets(NewWorkSheet.Name).Select ActiveSheet.Paste '文書ID欄にシート名を設定。適宜書き換えてください。 Range("B3") = strName '別のシート中の一覧から値をコピーする。適宜書き換えてください。 Sheets("文書名一覧").Select Range("E" & 5 + i).Select Selection.Copy Sheets(NewWorkSheet.Name).Select Range("B4").Select ActiveSheet.Paste StrLastSheetName = NewWorkSheet.Name Next End Sub
#しかしこのカラーリングは最低だな。背景にかぶってコードが読めない。白背景とかにしてほしい。