エクセルファイルの書き込み

Pocket

今回はEasyLanguageからエクセルファイルに何か書き込んで保存してみます。今回のコードはエクセルがパソコンに入っていないと動きません。


エクセルファイルを書き込む場合ですが、EasyLanguageからはエクセルファイルの作成ができません。存在するエクセルファイルを開いてセルの内容を書き換えて保存することしかできません。ブック(=エクセルファイル)の作成もシートの作成もできないので、例えば毎日とか定期的にEasyLanguageから新しいブックかシートに何かを書きだす処理をしたい場合は、他のプログラムと連動させる必要があります。連動の方法は次回書きます。ではエクセルファイルに何か書き込んでみます。エクセルを起動して、”c:\TradeStation”の下に”WriteTest.xlsx”を作成しておいてください。
EasyLanguageを起動してください。今回はトレーディングアプリケーションで作成しようと思います。以下の操作をしてください。

ファイル(F) → 新規作成(N) → トレーディングアプリケーション(T) → 名前に”$write_excel_app”と入力してOK押下

画面左のツールボックスからOffice:Workbookをダブルクリックします。

Workbookオブジェクト追加

コード入力部分の下側にWoorkbook1をいうオブジェクトが挿入されていると思います。それをクリックして右側のプロパティウィンドウからFileNameに”c:\TradeStation\WriteTest.xlsx”を入力してください。前後のダブルクォーテーションも入れないとエラーになるので注意してください。以下のコードを入力して検証してデバッグを開始(F3 → F5)してください。以下では”Sheet1″という名前のシートがあることを期待したコードになっていますので、そのようになっていない場合は変更しておいてください。

プログラム実行結果

TradeStationのウィンドウが前に出てきて、エクセルが起動されて2行目の3列目のセルに”書き込みテスト”と入力されたエクセルが表示されていると思います。Shift+F5でデバッグを止めてください。トレーディングアプリケーションで作成した場合は、以下のようにトレーディングアプリに自動的に表示されます。

トレーディングアプリケーション削除

ここから削除するにはどうすればいいのでしょうか。TradeStationでは、コンパイル(検証)前のファイルやコンパイル後のファイルがファイルとして保存されるわけではなくバイナリで管理されているようです。EasyLanguage側で以下の操作で削除してください。

ファイル(F) → 開く(O)… → 分析するタイプを選択(A)からアプリケーションを選択 → 削除するアプリケーションを選択して上の×マークか右クリックして削除(D)を選択

削除したアプリケーションは戻せそうにないので、必ず1回開いて不要なものであることを確認した上で閉じた後に削除してください。アイコンがたくさん出ることが気にならないのであれば無理に消す必要はないと思います。

COLUMN バイナリについて
バイナリについて説明します。エンジニアの方は飛ばしてください。よくテキストファイルとかバイナリファイルとか言いますが、便宜上そのように呼んでいるだけで両者の明確な違いは微妙です。一般的にはテキストエディタで開けるものはテキストファイル、開けないというか意味不明の文字列が羅列された状態で表示されるファイルはバイナリファイルと呼ばれます。違いとしては文字などがファイルにどのように書き込まれているかの違いになります。例えば”1″という文字であればテキストファイルであればキャラクターの”1″が書き込まれています。あるキャラクターがどのようなコードでファイルに書き込まれるかは文字コードなどに依存します。”1″であればほとんどの文字コードで”0x31″で書き込まれます。1バイト(=8ビット)で上位が”0011b”、下位が”0001b”で8ビット分です。16進数は頭に”0x”をつけて、2進数は後ろに”b”をつけることになっています。テキストエディタは”0x31″を見て文字コードごとのテーブルから表示すべき文字を”1″だと判断します。EasyLanguageは成果物をバイナリで管理しているようなので、作ったプログラムをEasyLanguageの外側(エクスプローラなど)から探すのは骨が折れるのでやめておいた方がいいです。

エクセルファイルのセルに文字を書き込んで保存することができました。今日のコードはここからダウンロードできます。このコードはWorkbook1オブジェクトが挿入されていないと動かないので注意してください。

コメントを残す

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