ブックを事前に作成する(エクセルVBA)

Pocket

今回もEasyLanguageからすこし離れます。EasyLanguageはエクセルファイルの操作ができますが、できることが限られています。エクセルVBAを使えばエクセルで出来ることはすべてできるので、エクセルVBAを使ってブックやシートの作成をやってみます。EasyLanguageはブックが作れなかったため、取引履歴などをエクセルに残したい場合に同じシートに書き続けるしかないなと思いこのようなエントリを立てていますが、用途は限られますのでご了承ください。今回の記事の内容はエクセルがないと動きません。


定期的な自動実行をイメージしているので、実装イメージとしては、マクロ付きエクセルファイルにVBAのコードを書いておき、ブックオープン時に自動的に実行されるようにしておきます。そのファイルをタスクに登録して開いてコードが実行されてエクセルファイルを作成したら閉じるという感じです。

COLUMN エクセルVBAについて
エクセルVBAについて基本的なことを簡単に説明しておきます。Visual Basic for Applicationsの略でエクセル上でプログラミングを行うことができる言語および環境です。エクセルの操作などはそのままコーディングできますし、ちょっと特殊な書き方をすればwindowsAPIと直接呼び出すことも可能なので、かなりのことができます。プログラムコードはブックそれぞれに保存することもできますしPERSONAL.XLSBという共通のファイルに保存することもできます。変数は使えば自動的に解釈されるため、事前に定義する必要はありませんが定義した方が書きやすいです。大文字・小文字は基本的に区別されませんが、勝手に解釈されて大文字・小文字が勝手に変換されることがあります。ここからは操作説明になりますが、プログラムを行うエディタはデフォルトではエンターキーを押下した時などに構文チェックが走るため、いちいちポップアップが表示されて、かなりうるさい状態です。Alt+F11で起動した後に、ツール(T)→オプション(O)…から自動構文チェック(K)をOFFにすることをお勧めします。プログラムからセルに色を塗る方法など、ちょっとしたことを自動化したいがコードの書き方がわからない場合は、操作実行前にエクセル側でマクロの記録を起動しておき、操作すると、その操作を実行するコードが記録されるため、そのコードをカスタマイズするなどしてプログラミングを進められます。

では、VBAの環境を起動します。エクセルを起動してAlt+F11を押下してください。画面左側のプロジェクトエクスプローラからThisWorkbookをダブルクリックしてから以下のコードを書いてください。エクセルファイルの作成場所は”c:\TradeStation\Excel”の中です。

マクロの編集

コードを書いたら関数の中(PrivateとEndの間)にカーソルを移動させてF5を押下してください。エクセルファイルが作成されたと思います。ファイルの存在チェックをしているので同じ日にもう1回実行しても何もせずにそのまま終了します。コードの中身を説明します。

  1. Workbook_Activate
    1. プログラムを終了する(自分自身を閉じる)
  2. Workbook_Open
    1. 定数の定義をしています。
    2. ワークブックオブジェクトを定義しています。
    3. ブック名の変数を定義しています。
    4. 現在日付からブック名を生成しています。
    5. ファイルの存在チェックをして存在している場合は終了しています。
    6. ワークブックを作成してワークブックオブジェクトとして設定しています。
    7. ワークブックを別名保存しています。
    8. ワークブックを閉じています。

Activate側の命令は、ブック作成後に自分自身を閉じるための命令です。タスクスケジューラからの定期実行を想定しています。Open側の最初の定数については、フォルダや何かの回数のようにプログラム中では変更しないが、設定として変更したいような値は変更しない値として定義します。今回はフォルダ名を2か所で使っていますが、プログラムが長くなると何度も使うため、変更する時に定数として定義しておかないとプログラムの保守性が下がります。中ほどのSet命令のところは、単に値を代入するのではなくオブジェクトを格納しています。myWorkBookが単に変数ではなくワークブックオブジェクトであるため、このような書き方になります。

マクロを書いたブックを保存する場合は、マクロ付きブック(拡張子.xlsm)で保存する必要があります。また、このコードを入れるとこのブックを開くとコードを実行して自動で閉じてしまいます。このブック自体を編集したい場合は、エクセルを起動してファイルを開くを選択して開く(O)をクリックする時にShiftキーを押したまま(開き終わるまで)開いてください。
マクロ付きエクセルブックを開く

タスクスケジューラに登録して定期実行させるには、操作を登録する時にプログラム/スクリプト(P):にエクセルを指定して、引数の追加(オプション)(A):のところに、開きたいファイルを指定してください。エクセルファイルのパスはエクセルのショートカットをプロパティで開けば出てきます。
タスクの作成

エクセルのパス

エクセルVBAからブックを作成することができました。今回のソースコードはここからダウンここロードできます。

コメントを残す

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