カテゴリー名: [ExcelVBAとOLE ワークシートの操作]
Sheet1, Sheet2 といったワークシート名を変更するやり方を取り上げます。
ワークシート名として使えない文字にも触れます。
ワークシート名の変更は、ワークシートオブジェクトのNameプロパティで行います。記述例をあげると下のとおり。
ActiveSheet.Name = "test"
→ アクティブシートの名前を test に変更。
Worksheets("Sheet2").Name = "test02"
→ Sheet2をtest02に変更。
以後、Worksheets("test02")
として該当のワークシートオブジェクトを参照することになります。
同一のワークブックに所属するワークシートには、重複して同じ名前を付けることはできません。第1ワークシートと第2ワークシートの両法に、同じ test という名前にするといったことはできないので注意が必要です。
それから、ワークシート名には使えない文字があるので注意して下さい。全角/半角を問わず、次の文字が使えないようです。
上をみると、「ドライブ名・フォルダ名・ファイル名」の区切り文字やワイルドカード文字に当たる文字が使えないようです。
ワークシートが1枚だけのワークブックを作成する方法がありますが、その場合、ワークシート名がそのままワークブックの名前になります。なので、上記の文字がワークシート名として使えないようになっているのだと思います。
次の処理を行うVBAマクロを掲げます。
先のマクロと同じ庶路を行う VBScript を掲げます。
ワークブックオブジェクトを示す WBobj を逐一記述するのが面倒なので、Withを用いてWBobjの記述を省略しています。
それ以外は、基本的にVBAマクロと同じです。
1' ワークシート名の変更 2Option Explicit 3Dim FSO, BookPath 4Dim EXLapp, WBobj 5Const xlWorkbookNormal = -4143 6 7Set FSO = CreateObject("Scripting.FileSystemObject") 8BookPath = FSO.GetAbsolutePathName("Book1.xls") 9If (FSO.FileExists(BookPath) = True) Then FSO.DeleteFile(BookPath) 10Set EXLapp = CreateObject("Excel.Application") ' Excelの起動 11EXLapp.Visible = True ' Excelを見える状態に 12Set WBobj = EXLapp.Workbooks.Add() ' Workbookの新規作成 13With WBobj 14 .ActiveSheet.Name = "test" 15 .ActiveSheet.Range("A1").Value = .ActiveSheet.Name 16 .Worksheets("Sheet2").Name = "test02" 17 .Worksheets("test02").Range("A1").Value = .Worksheets("test02").Name 18End With 19WBobj.SaveAs BookPath, xlWorkbookNormal 20EXLapp.quit
前述の VBScript と同じ処理を行う JScript は、下のとおりです。
1// ワークシート名の変更 2var fso, bookPath; 3var ExlApp, wb; 4var xlWorkbookNormal = -4143; 5 6fso = WScript.CreateObject("Scripting.FileSystemObject"); 7bookPath = fso.GetAbsolutePathName("Book1.xls"); 8if (fso.FileExists(bookPath)) fso.DeleteFile(bookPath); 9ExlApp = WScript.CreateObject("Excel.Application"); // Excelの起動 10ExlApp.Visible = true; // Excelを見える状態に 11wb = ExlApp.Workbooks.Add(); // Workbookの新規作成 12with (wb) { 13 ActiveSheet.Name = "test"; 14 ActiveSheet.Range("A1").Value = ActiveSheet.Name; 15 Worksheets("Sheet2").Name = "test02"; 16 Worksheets("test02").Range("A1").Value = Worksheets("test02").Name; 17} 18wb.SaveAs(bookPath, xlWorkbookNormal); 19ExlApp.Quit();
〜 以上 〜