2016/04/02
参考サイト: Excel VBA 入門講座 ワークシートの名前の変更
ワークシート名の変更は、ワークシートオブジェクトのNameプロパティで行います。記述例をあげると下のとおり。
ActiveSheet.Name = "test"
→ アクティブシートの名前を test に変更。
Worksheets("Sheet2").Name = "test02"
→ Sheet2をtest02に変更。以後、Worksheets("test02")
として該当のワークシートオブジェクトを参照することになる。
同一のワークブックに所属するワークシートには、重複して同じ名前を付けることはできません。第1ワークシートと第2ワークシートの両法に、同じ test という名前にするといったことはできないので注意が必要です。
それから、ワークシート名には使えない文字があるので注意して下さい。全角/半角を問わず、次の文字が使えないようです。
上をみると、「ドライブ名・フォルダ名・ファイル名」の区切り文字やワイルドカード文字に当たるものが使えないようです。
「概要」で述べてきた事柄をVBAマクロとして登録するためのスクリプトを掲げます。
これまでと同様に、マクロには Control + j
というショートカットキーを割り当てます。
1# encoding: Windows-31J 2require "./exlap" 3 4macro_str = <<'EOS' 5Sub Macro1() 6 ActiveSheet.Name = "test" 7 Worksheets("Sheet2").Name = "test02" 8End Sub 9EOS 10 11macro_name = "Macro1" 12File.delete("Book1.xls") if test(?e, "Book1.xls") # 既存のBook1.xlsを削除 13Exlap.new("Book1.xls") do |wb| 14 wb.macro_add(macro_str) 15 wb.Application.MacroOptions("Macro"=>macro_name, "ShortcutKey"=>"j") 16 wb.save 17end
前述のマクロと同じ処理を行うwin32oleのスクリプトは下のようになります。
1# encoding: Windows-31J 2require "win32ole" 3 4def fullpath(filename) 5 fso = WIN32OLE.new("Scripting.FileSystemObject") 6 return fso.GetAbsolutePathName(filename) 7end 8 9File.delete("Book1.xls") if test(?e, "Book1.xls") # 既存のBook1.xlsを削除 10app = WIN32OLE.new("Excel.Application") 11wb = app.Workbooks.Add() 12wb.ActiveSheet.Name = "test" 13wb.Worksheets("Sheet2").Name = "test02" 14wb.SaveAs(fullpath("Book1"), -4143) 15app.Quit
同じ処理を行うexlapのスクリプトを掲げます。