ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

VBScriptやJScriptでExcelのワークシートを指定シートの後に追加する

まずはVBAでやる場合

Excelをプログラムであやつる場合、何はともあれVBAが基本になります。


シートを追加するには、Excel.Worksheets#Addを使います。
定義は、

Function Add([Before], [After], [Count], [Type]) As Object

となっており、名前付き引数と呼ばれるものになってます。


例えば、VBAからこの関数を呼ぶには、以下のようにします。

Sub hoge()
    Sheets.Add After:=Sheets("Sheet3")
End Sub

現在アクティブになっているExcelブックのSheet3の後ろに、
シートが一つ追加されます。

次にVBScriptでやる場合

VBScriptでは、名前付き引数の指定はできないので、
代わりに不要な引数を省略します。

' Excelを起動
Set excelObj = CreateObject("Excel.Application")

' Workbookを開く
Set workbook = excelObj.workbooks.Open("hoge.xls")

' "Sheet3"の後ろにシートを追加
Set newSheet = workbook.Sheets.Add(, workbook.Sheets("Sheet3"))

' 保存
workbook.Save()

' Excelを終了
excelObj.Quit()

最後にJScriptでやる場合

JScriptでは、名前付き引数の指定や、引数の省略はできないので、代わりにnullを指定します。

var excelObj = new ActiveXObject("Excel.Application");
var workbook = excelObj.workbooks.Open("hoge.xls");
var newSheet = workbook.Sheets.Add(null, workbook.Sheets("Sheet3"))
workbook.Save()
excelObj.Quit()

昨日、

とツイートしたのですが、
「全てのパラメータを指定する必要がある」
はウソでしたね。
前から順番に必要なパラメータだけを指定すればOKです。