win32ole で Excel のシートコピー

win32ole でExcelのシートコピーをするには以下のようにする。

require 'win32ole'

xl = WIN32OLE.new('Excel.Application')
fso = WIN32OLE.new('Scripting.FileSystemObject')
book = xl.Workbooks.Open(fso.GetAbsolutePathName("./Book1.xls"))
sheet = book.Worksheets("Sheet1")

# Sheet1 の後ろへコピー
sheet.Copy "after" => sheet

# コピー先のシート名を変更
xl.ActiveSheet.Name = "New Sheet"

コピー先の場所は、VBマクロでは名前付き引数で指定するが、win32oleではハッシュで指定する。
WorksheetのCopyで指定できるのは、"after" と "before"。

コピーした後のシートがアクティブシートになる。

※以前の記事
まるぼ〜の日記 - win32ole で Excel を使う(1)
まるぼ〜の日記 - win32ole で Excel を使う(2)
まるぼ〜の日記 - win32ole で Excel を使う(3)
まるぼ〜の日記 - win32ole で Excel を使う(4)
まるぼ〜の日記 - win32ole で Excel を使う(5)
まるぼ〜の日記 - win32ole で Excel を使う(6)