カテゴリー名: [ExcelVBAとOLE ワークシートの操作]
Sheet2のコピーをSheet3の後ろに設けるといった方法を取り上げます。
ワークシートのコピーは、Copyメソッドで行います。
ターゲットのワークシートをどの位置にコピーするかは、Copyメソッドの Before または After パラメータで指示します。
アクティブシートを Sheet3 の前にコピーしたい時は下のとおり。
ActiveSheet.Copy Before:=Worksheets("Sheet3")
Sheet2をSheet3の後ろにコピーしたい時は次のようにします。
Worksheets("Sheet2").Copy After:=Worksheets("Sheet3")
上を実行すると、新しいワークシート(Sheet2と同じ内容)がアクティブシートになります。
その新しいワークシートの名前は、おそらく Sheet2 (2) です。
「おそらく」というのは、Sheet2 (2) という名前のワークシートが既に存在するなら Sheet2 (3) などになるからです。
Copyメソッドの戻り値は True, False のどちらかです。
コピーに成功した時は True を返します。
Copyメソッで Before, After のどちらのパラメータも指定しない場合は、ターゲットのワークシートが別のワークブックにコピーされます。
別のワークブックというのは、新しく設けられるワークブックです。
Worksheets("Sheet2").Copy
とすれば、Sheet2と同じ内容のワークシートが別の新設ワークブックにコピーされます。
その新しいワークブックにはワークシートが1枚しかありません。
そのワークシート名は Sheet2 です。Sheet2 (2) などではありません。
パラメータなしで Copy を使うことはあまりないと思いますが、念のため。
次の処理を行うVBAマクロを掲げます。
先のマクロと同じ庶路を行う VBScript を掲げます。
Moveメソッドのパラメータの名前 Before, After を使えないので、パラメータを規定の順番で列べます。Beforeが第1、Afterが第2です。
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.Copy .Worksheets("Sheet3") 15 .ActiveSheet.Range("A1").Value = .ActiveSheet.Name 16 .Worksheets("Sheet2").Copy , .Worksheets("Sheet3") 17 .ActiveSheet.Range("A1").Value = .ActiveSheet.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.Copy(Worksheets("Sheet3")); 14 ActiveSheet.Range("A1").Value = ActiveSheet.Name; 15 Worksheets("Sheet2").Copy(null, Worksheets("Sheet3")); 16 ActiveSheet.Range("A1").Value = ActiveSheet.Name; 17} 18wb.SaveAs(bookPath, xlWorkbookNormal); 19ExlApp.Quit();
〜 以上 〜