Microsoft WordをVBスクリプトから操作する

ワードドキュメントをVBスクリプトを利用して作成し、ある程度自動的に処理する場合のサンプルです。
まったくプログラムを作ったことが無い人用に、何か作って面白いものは無いかなと思って取り組んではみたのですが、ほぼ参照したサイトからコードをいただいている感じで少々記載自体恐縮ですが・・・。
参考にさせてもらったサイト一覧は文末を参照してください。

非プログラマなSEの場合でも、業務効率化のためにはプログラムはほぼ避けては通れない道だと思います。
ただ、覚えると単純に便利なので是非覚えてみてください。

実行すると、新規ワード文書を作成し、WMIのWin32_Serviceからサービスの一覧を取得してテーブル上に書き込みます。

動作確認環境はOffice 2010なので、別バージョンだと動作しない場合があります。
特に46行目が動かない気がしますので、実行後エラーが出る場合にはこの行をコメントアウトしてみてください。また、WMIを利用したVBスクリプトなのでWindows OS以外では動作しません。

Const END_OF_STORY = 6
Const wdPageBreak = 7

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

'ワードドキュメントを新規作成
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

'ページ番号をフッターに書き込む処理
Set objSection = objDoc.Sections(1)
Set objFooters = objSection.Footers(1).PageNumbers
objFooters.Add(1)

'フォントの指定
objSelection.Font.Name = "MS 明朝"

'フォントサイズ
objSelection.Font.Size = "12"

'本文の入力
objSelection.TypeText "Win32_Serviceサービスの一覧表示"

'文字入力後にEnterキーを押すのと同じ意味
objSelection.TypeParagraph()

'フォントサイズ
objSelection.Font.Size = "10.5"

'日付を本文に書き込みます
objSelection.TypeText "" & Date()

objSelection.TypeParagraph()

'テーブルを作成する
Set objRange = objSelection.Range

'テーブルの初期サイズの指定
objDoc.Tables.Add objRange,1,3
Set objTable = objDoc.Tables(1)
'フォントサイズ
objTable.Range.Font.Size = 10
'テーブルスタイルを変更する場合に
objTable.Range.Style = "表 (青)  2"

x=2

objTable.Cell(x, 1).Range.Text = "名前"
objTable.Cell(x, 2).Range.text = "表示名"
objTable.Cell(x, 3).Range.text = "状態"

strComputer = "."
Set objWMIService = _
    GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service")

For Each objItem in colItems
    If x > 1 Then
    	'テーブルの行を追加
        objTable.Rows.Add()
    End If
    
    'セルの文字列をボールドにする
    objTable.Cell(x, 1).Range.Font.Bold = True
    objTable.Cell(x, 1).Range.Text = objItem.Name
    objTable.Cell(x, 2).Range.text = objItem.DisplayName
    objTable.Cell(x, 3).Range.text = objItem.State
    x = x + 1
Next

'表を表示させた場合に最後に挿入
objSelection.EndKey END_OF_STORY
objSelection.TypeParagraph()

'改行する場合には以下の記載
objSelection.InsertBreak(wdPageBreak)

参考リンク

今回参考にさせてもらったサイト一覧です。

Office Space: ヒントとテクニック
http://technet.microsoft.com/ja-jp/library/ff852823.aspx

Microsoft Word スクリプトサンプル
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/

How Can I Add Multiple Tables to a Word Document?
http://blogs.technet.com/b/heyscriptingguy/archive/2006/06/09/how-can-i-add-multiple-tables-to-a-word-document.aspx

参考図書

基本的にVBスクリプト関連は枯れた技術なのでインターネット上を調べてみると簡単に情報は手に入りますが、そもそも何を調べていいのか分からない状態であれば、リファレンスがあると便利だと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です