【 シートの処理 】

1. シート名によるシート選択
2. シートの一覧
3. シートの複写

Workbook オブジェクト
  • Worksheet には、Workbook オブジェクトからアクセスします。Application
    オブジェクトから取得した Workbook オブジェクトの Worksheets コレクシ
    ョンで、目的のワークシートを操作する為のオブジェクトを取得します


  • Application
  • Workbooks ( コレクション )
  • Workbook
  • Worksheets ( コレクション )
  • Worksheet


  • <SCRIPT language=VBScript>
     
    Const xlMaximized = -4137
    Const xlMinimized = -4140
    Const xlNormal = -4143
     
    Dim App,Workbook,Worksheet
     
    Set App = CreateObject("Excel.Application")
    App.Visible = True
     
    Set Workbook = App.Workbooks.Open( "D:\winofsql\Book1.xls" )
     
    ' アクティブなウィンドウを最大化
    App.ActiveWindow.WindowState = xlMaximized
     
    ' Sheet1 の取得
    Set Worksheet = Workbook.Worksheets( "Sheet1" )
     
    ' 選択する
    Worksheet.Select
     
    Set Worksheet = Nothing
     
    ' Sheet2 の取得
    Set Worksheet = Workbook.Worksheets( 2 )
     
    ' 選択する
    Worksheet.Select
     
    </SCRIPT>
    


    番号での選択
  • Worksheet は、1番からの数値で選択する事も可能なのでシートの数を取得
    してループ処理を行なう場合に適しています


  • コレクションの Count プロパティ
  • コレクションには必ず Count プロパティがあります。それを使用して
    シート名の一覧を取得します


  • Set Workbook = App.Workbooks.Open( "D:\winofsql\Book1.xls" )
     
    SheetCount = Workbook.Worksheets.Count
    For i = 1 to SheetCount
    	strNames = strNames & Workbook.Worksheets( i ).Name & vbCrLf
    Next
    alert( strNames )
    
  • このような処理と、コンボボックスとを併用するような処理が考えられます


  • Copy メソッド
  • シートの複写には Worksheet オブジェクトの Copy メソッドを使用します


  • Set Workbook = App.Workbooks.Open( "D:\winofsql\Book1.xls" )
     
    SheetCount = Workbook.Worksheets.Count
    Set SheetStart = Workbook.Worksheets( 1 )
    Set SheetEnd = Workbook.Worksheets( SheetCount )
     
    ' 一番最後に追加
    Call SheetStart.Copy( ,SheetEnd )
    Workbook.ActiveSheet.Name = "最後"
     
    ' 最後から2番目に追加
    Call SheetStart.Copy( SheetEnd )
    Workbook.ActiveSheet.Name = "手前"
    
  • Excel の内部定義は以下のようになっています

  • HRESULT _Worksheet::Copy ( const _variant_t & Before, const _variant_t & After );