2009年7月27日月曜日

ScriptomとExcelでワークシートをコピーする

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


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枚目のシートをブックのシートの最初にコピー
wb.sheets(1).copy(wb.sheets(1))

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


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

ea.DisplayAlerts = false

// 1枚目のシートをブックのシートの一番後にコピー
wb.sheets(1).copy(Scriptom.MISSING, wb.sheets(wb.sheets.count))

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

}


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


1枚目のシートをブックのシートの最初にコピーした結果(test4a.xls)


1枚目のシートをブックのシートの一番後にコピーした結果(test4b.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")

' 1枚目のシートをブックのシートの最初にコピー
wb.sheets(1).copy(wb.sheets(1))
wb.saveAs(sh.CurrentDirectory + "\test4c.xls")

wb.close


' 1枚目のシートをブックのシートの一番後にコピー
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

wb.sheets(1).copy ,wb.sheets(wb.sheets.count)
wb.saveAs(sh.CurrentDirectory + "\test4d.xls")

wb.close


関連情報

0 件のコメント:

コメントを投稿