ブックを事前に作成する(テンプレートコピー)

Pocket

今回はEasyLanguageからはできないエクセルのブックやシートの作成を実行する方法について書きます。あまり用途はないかもしれませんが、トレードシステムからエクセルファイルになにか定期的に書き込む場合の参考にしてください。トレードシステムを作る上でエクセルを使うことは必ずしも必要ではありませんが、知っておくと何かの役に立つかもしれません。今回の記事はTradeStationやEasyLanguageからは少し離れた記事になります。


エクセルのブックやシートを作る方法はいつくかあります。思いつくものをあげて説明しますので、好きな方法を使ってください。大きく分けると、テンプレートを用意しておいて、そのテンプレートをコピーする方法とエクセルを起動してブックやシートを作成する方法があります。今回はテンプレートを用意しておいてコピーする方法を説明します。ファイルをコピーするプログラムを書く方法としては、VisualStudioや他の言語のようにOS標準ではないものを除けば以下のような方法があります。

  • バッチファイル
  • Windows Script Host
  • Windows Power Shell

以下このページの説明はOSに依存するものが含まれますが、Windows10を想定して説明します。まずバッチファイルによるコピーを説明します。コピー元のテンプレートエクセルファイルを”c:\TradeStation\Excel\template.xlsx”に配置して、”c:\TradeStation\Excel”の下に日付のファイル名でコピーすることを想定します。メモ帳を開いて以下のソースコードを入力して、”c:\TradeStation\Excel\excel_file_copy.bat”で保存してください。

作成した場所をエクスプローラで開いてファイルをダブルクリックしてください。コマンドプロンプトが起動されて”ファイルが1個のファイルをコピーしました。”というメッセージが表示されると思います。パスが違っている場合はエラーとなりますので、適宜フォルダ名などを修正してください。最後のpauseは稼働確認用なので確認したら行を削除してください。pauseしなければ一瞬コマンドプロンプトが表示されるだけでそのまま終了します。

次にWindows Script Host(以下WSHと記載)を説明します。WSHはWindows管理ツールの一つで、Windows上でスクリプトを実行することができます。言語はVBScripかJScriptが使用できます。VBScripで説明します。メモ帳を開いて以下のソースコードを入力して、”c:\TradeStation\Excel\excel_file_copy.vbs”で保存してください。

最初の行は、Windows上でファイルシステムにアクセスするためのオブジェクト(FileSystemObject)を作成しています。作成したファイルをダブルクリックしてください。エラーのポップアップが表示されなければ成功しているはずです。

次にWindows Power Shell(以下PowerShellと記載)を説明します。PowerShellはデフォルトでは実行できないポリシー設定になっているはずなので、ポリシー設定を変更する必要があります。そのあたりがよくわからないので少し気味が悪い場合は別の方法をお勧めします。ローカルで作成したものに無条件に実行権限を与える設定変更なのでネットワークからダウンロードしてきたものを実行するにはもう一つ壁がありますが、どちらにしても普通にパソコンを使う分には必要のないものに実行権限を与えることになるので、セキュリティは落ちる方向になります。
では、まず設定変更をします。画面左下のWindowsマークを右クリックして、”Windows PowerShell(管理者)(A)”をクリックして起動してください。”Set-ExecutionPolicy RemoteSigned”と入力して完了キーを押下してください。特に何もメッセージは出ないと思いますが、これでPowerShellが実行できるようになっています。メモ帳を開いて以下のソースコードを入力して、”c:\TradeStation\Excel\excel_file_copy.ps1″で保存してください。

現在日付を取ってファイルをコピーしているだけなので、特に説明は必要ないと思います。実行方法ですが、保存したファイルをダブルクリックしてもメモ帳が開かれるだけで実行されないと思います。ファイルを右クリックして”PowerShell で実行”を選択してください。PowerShellの実行ウィンドウが表示されてそのまま消えると思います。

作成したプログラムを定期的に実行したい場合の設定を説明します。エクスプローラを起動してPCのところで右クリックして”管理(G)”を選択してください。
コンピュータの管理画面を起動

コンピュータの管理の画面が起動できたら、左の時計のマークがある”タスク スケジューラ”を選択して、以下の操作でタスクを作成してください。

右側の操作のタスクの作成 → 名前(M):エクセルファイルのコピー → トリガー:新規(N)…をクリック → 設定:毎日(D) → 開始(S)の日付と時間を変更してOK → 操作:新規(N)…をクリック → プログラム/スクリプト(P)に”powershell” → 引数の追加(オプション)(A)に”c:\TradeStation\Excel\excel_file_copy.ps1″を入力してOK → OK

タスクを作成

設定が不安な場合は、アクティブなタスクをダブルクリックして出てくるタスク一覧から設定したタスクを右クリックして実行をクリックして実行されることを確認してください。上の操作はPowerShellの場合ですが、バッチファイルかWSHの場合はプログラム/スクリプトのところにそのままファイルを指定してください。

エクセルファイルのテンプレートの定期コピーができました。今日のコードはそれぞれ以下においておきます。

セキュリティ上の理由から”.bat”などはリンクできないため、拡張子を2重につけています。バッチファイルやスクリプトファイルはいろいろなことができるため、ネットワークからダウンロードしたものを安易に実行することは危険な行為ですのでご注意ください。

コメントを残す

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