ワークシート名の変更

カテゴリー名: [ExcelVBAとOLE ワークシートの操作

2016/09/03

Sheet1, Sheet2 といったワークシート名を変更するやり方を取り上げます。

ワークシート名として使えない文字にも触れます。


《このページの目次》


    

1. 概要

 ワークシート名の変更は、ワークシートオブジェクトのNameプロパティで行います。記述例をあげると下のとおり。

 ActiveSheet.Name = "test" → アクティブシートの名前を test に変更。

 Worksheets("Sheet2").Name = "test02" → Sheet2をtest02に変更。
以後、Worksheets("test02") として該当のワークシートオブジェクトを参照することになります。

 同一のワークブックに所属するワークシートには、重複して同じ名前を付けることはできません。第1ワークシートと第2ワークシートの両法に、同じ test という名前にするといったことはできないので注意が必要です。

    

 それから、ワークシート名には使えない文字があるので注意して下さい。全角/半角を問わず、次の文字が使えないようです。

 上をみると、「ドライブ名・フォルダ名・ファイル名」の区切り文字やワイルドカード文字に当たる文字が使えないようです。

 ワークシートが1枚だけのワークブックを作成する方法がありますが、その場合、ワークシート名がそのままワークブックの名前になります。なので、上記の文字がワークシート名として使えないようになっているのだと思います。

目次に戻る


    

2. VBAマクロ

 次の処理を行うVBAマクロを掲げます。

    

△ macro11.txt

1' ワークシート名の変更
2Sub Macro1()
3    ActiveSheet.Name = "test"
4    Range("A1").Value = ActiveSheet.Name
5    Worksheets("Sheet2").Name = "test02"
6    Worksheets("test02").Range("A1").Value = Worksheets("test02").Name
7End Sub

目次に戻る


    

3. OLEを利用するVBScript

 先のマクロと同じ庶路を行う VBScript を掲げます。

 ワークブックオブジェクトを示す WBobj を逐一記述するのが面倒なので、Withを用いてWBobjの記述を省略しています。

 それ以外は、基本的にVBAマクロと同じです。

△ vovXL11.vbs

 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

目次に戻る


    

4. OLEを利用するJScript

 前述の VBScript と同じ処理を行う JScript は、下のとおりです。

△ vovXL11.js

 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();

〜 以上 〜