【 シートの処理 】
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 );
|