2009年7月26日日曜日

ScriptomとExcelでワークシートを追加する

ScriptomとExcelでワークシートを追加するには、以下のコードのようにaddメソッドを使用します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

// 上書き確認メッセージボックスを出さないようにする
ea.DisplayAlerts = false

// 1枚目のシートの前に新規ワークシート追加
ws = wb.sheets.add(wb.sheets(1))
ws.name = "前追加"

wb.saveAs(new File("test1a.xls").canonicalPath)
wb.close


wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

// 2枚目のシートの後に新規ワークシート追加
ws = wb.sheets.add(Scriptom.MISSING, wb.sheets(2))
ws.name = "後追加"

wb.saveAs(new File("test1b.xls").canonicalPath)
wb.close

}


サンプルExcelブック(test1.xls)


シートを一番最初に追加した結果(test1a.xls)


2枚目のシートの後に新規ワークシートを追加した結果(test1b.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

' 上書き確認メッセージボックスを出さないようにする
xa.DisplayAlerts = false
' 指定したシートの前に追加
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

Set ws = wb.worksheets.add(wb.sheets(1))
ws.name = "前追加"
wb.saveAs(sh.CurrentDirectory + "\test1c.xls")

wb.close

' 指定したシートの後に追加
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

Set ws = wb.worksheets.add(,wb.sheets(2))
ws.name = "後追加"
wb.saveAs(sh.CurrentDirectory + "\test1d.xls")

wb.close


関連情報

0 件のコメント:

コメントを投稿