4.5 ワークブックの操作
 エクセルのワークブックを操作する方法です。エクセルオブジェクトのメソッドを実行したりプロパティを使ったりするだけで、基本的にはエクセルマクロと同じ感覚でやれば良いです。
使用例
 エクセルのワークブックを操作する方法です。新しくワークブックを作り、罫線を付けたり色を塗ったりしています。

 この例では、wsfの方では他に特に何もしていません。エクセルマクロの定数を使えるようにするための宣言と、workbookedit.vbsに書いてある処理の呼び出し(A)のみです。ワークブックの操作は、workbookedit.vbsの方で行いました。内容は、セルに罫線と背景色を付けるという内容です。エクセルの定数(workbookedit.vbsの下線部分)を使っていますが、詳しくは1.9 標準装備じゃない定数を使いたい場合をどうぞ。

 エクセルの操作を行うときに一つ注意ですが、エクセルマクロで選択範囲を意味するSelectionというヤツは、VBS(WSH)では使えません。その代わりに、選択した範囲をオブジェクトとして保存し、Selectionの代わりに使っています(B〜Gの所)。

 この例では、ワークブックへの操作が分かるように、あえてワークブックを閉じたりエクセルの終了(Quit)を行ってません。かつ、VBS(WSH)のプログラムが終了してもエクセルは終了しません。早い話が、エクセルが出っぱなしになります。出っぱなしになる理由については、4.8 ワークブックを扱うときの注意を参考にしてください。

 なお、ワークブックを閉じる方法については、4.7 ワークブックを閉じるをどうぞ。

こっちがメイン(実行する方)。ファイル名はExcelMain.wsfで作成
<job id="ExcelJob">

<!-- @エクセルのライブラリを宣言(エクセルマクロの定数を使うため) -->
<reference guid="00020813-0000-0000-C000-000000000046"></reference>

<script language="VBScript" src="./workbookedit.vbs"></script>
<script language="VBScript">

    'A主となる処理はworkbookedit.vbsにあるので呼び出します
    Call prcMain

</script>

</job>

こっちは実際の処理を行う方。ファイル名はworkbookedit.vbsで作成
Option Explicit

Dim objExcel

Sub prcMain()

    Dim objSelection

    'エクセルオブジェクトを作成します
    Set objExcel = CreateObject("Excel.Application")

    'エクセル画面を表示します
    objExcel.Visible = True

    'ワークブックを作ります
    objExcel.Workbooks.Add

    'B範囲を選択します。選択した範囲はオブジェクトとして保存します
    ' (エクセルマクロのSelectionが使えないため)
    Set objSelection = objExcel.Workbooks(1).Worksheets(1).Range("B2:D10")

    'C選択した範囲の下に罫線を付けます
    With objSelection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

    'D選択した範囲の上に罫線を付けます
    With objSelection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

    'E選択した範囲の右に罫線を付けます
    With objSelection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

    'F選択した範囲の左に罫線を付けます
    With objSelection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

    'G選択した範囲内のセルを塗りつぶします
    With objSelection.Interior
        .ColorIndex = 10
        .Pattern = xlSolid
    End With

    'オブジェクトの破棄
    Set objSelection = Nothing
    Set objExcel = Nothing

End Sub
 ※例では、エクセルの画面をわざと表示しています
Copyright(C) 1999-2006 結城圭介。 All rights reserved