ひげめがね
VB ScriptでExcelファイルを編集する方法を何回かに分けて説明します。
Excelファイルの中に組み込むVBAとは違いますよ。
- 外部のデータを元にExcelファイルを自動編集できるので、RPAのようなことができる
- Excelファイルへの組み込みではないので先方に渡しやすい
- テンプレートとなるExcelファイルを用意して、サンプルをメモ帳などに貼り付けて、
拡張子を「vbs」に変更すれば実行できます。(テンプレートの中身は空でOK)
- Microsoft Excelがインストールされた、Windows PC
- 多少のVB Script の知識
- 多少のファイルシステムの知識(フォルダやパス,拡張子について)
sample.vbs
'■■テンプレートファイルのコピー■■■■■■■■■■■■■■■■■■■■■■■■
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("c:\temp\template.xlsx")
objFile.Copy "c:\temp\newfile.xlsx"
Set objFS = nothing
Set objFile = nothing
'■■コピーしたExcelファイルを開く ■■■■■■■■■■■■■■■■■■■■■■■
Set ExcelObj = CreateObject("Excel.Application")
Set ExcelFile = ExcelObj.Application.Workbooks.Open("c:\temp\newfile.xlsx")
ExcelObj.Visible = True
ExcelFile.Worksheets(1).Range("B2").Value = "今日は" & date() & "です"
'■■編集したExcelファイルを保存する ■■■■■■■■■■■■■■■■■■■■■■
ExcelFile.Save
'■■Excelファイルを閉じる ■■■■■■■■■■■■■■■■■■■■■■■■■■■
ExcelFile.Close
'■■終了処理■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Set ExcelFile = Nothing
Set ExcelObj = Nothing
- 「テンプレートファイルのコピー」部分で、元となるファイル「c:\temp\template.xlsx」をコピーして
「c:\temp\newfile.xlsx」で保存しています。
※サンプルをそのまま動かしてみる場合は、PCのCドライブの「temp」フォルダ内に「template.xlsx」を
保存しておいてください。 - 「= nothing」 は生成したオブジェクトをきれいに削除するためのおまじないです。
(無くてもプログラムは動く) - 「コピーしたExcelファイルを開く」部分で、先のファイルをExcelとして編集できる形で開いています。
- Excelファイルを扱う箱として「Excel.Application」オブジェクトを作成し、その中にファイルを
入れている感じです。 - 「ExcelObj.Visible = True 」 は実行した時にExcelの画面を表示するかどうかの設定です。
「True」で表示、「False」で非表示となります。
True だとスクリプトの動きが見えるので進捗は把握しやすいですが、中をクリックなどされると
スクリプトが止まってしまいます。
False だと触られてスクリプトが止まることはありませんが、時間のかかるスクリプトだと、
きちんと動いているか不安になるかもしれません。 - 「ExcelFile.Worksheets(1).Range(“B2”).Value = “今日は” & date() & “です”」は
開いたExcelファイルの1番目(一番左)のシートの B2セルに 「今日は○年○月○日です」と出力しています。 - 「編集したExcelファイルを保存する」部分で、ファイルを上書き保存しています。
- 「Excelファイルを閉じる」部分で、Excelファイルを閉じています。
ここでExcelファイルを閉じずにスクリプトを終了させることも可能です。
生成後に手で修正等が必要な場合は、閉じない方が良いかもしれません。
ひげめがね
次回からは、罫線の引き方やセルの結合、シートのコピーや追加、印刷範囲の設定などを
順番に説明していきたいと思います