ワークシートの名前の変更 – ExcelVBAの散策とruby

2016/04/02

参考サイト:  Excel VBA 入門講座 ワークシートの名前の変更


《目次》


1. 概要

 ワークシート名の変更は、ワークシートオブジェクトのNameプロパティで行います。記述例をあげると下のとおり。

 ActiveSheet.Name = "test" → アクティブシートの名前を test に変更。

 Worksheets("Sheet2").Name = "test02" → Sheet2をtest02に変更。以後、Worksheets("test02") として該当のワークシートオブジェクトを参照することになる。

 同一のワークブックに所属するワークシートには、重複して同じ名前を付けることはできません。第1ワークシートと第2ワークシートの両法に、同じ test という名前にするといったことはできないので注意が必要です。

    

 それから、ワークシート名には使えない文字があるので注意して下さい。全角/半角を問わず、次の文字が使えないようです。

 上をみると、「ドライブ名・フォルダ名・ファイル名」の区切り文字やワイルドカード文字に当たるものが使えないようです。

目次に戻る


2. マクロを登録するスクリプト

 「概要」で述べてきた事柄を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

目次に戻る


3. win32oleのスクリプト

 前述のマクロと同じ処理を行う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

目次に戻る


4. exlapのスクリプト

 同じ処理を行うexlapのスクリプトを掲げます。

    

 1# encoding: Windows-31J
 2require "./exlap"
 3
 4File.delete("Book1.xls")  if test(?e, "Book1.xls")  # 既存のBook1.xlsを削除
 5Exlap.new("Book1.xls") do |wb|
 6    wb.ActiveSheet.Name = "test"
 7    wb.Worksheets("Sheet2").Name = "test02"
 8    wb.save
 9end

前のページ:ワークシートの追加

次のページ:ワークシートの移動

「ExcelVBAの散策とruby」トップページ