見出し画像

エクセル読み書き

読み込み

浮動株、有利子負債、優待のデータ等が欲しくて、取り敢えずエクセルから読み取りレーダースクリーンに表示させようと試みました
新しく任意のインジケーターを作成します
(レーダースクリーン用なのでチャート分析のチェックは外して下さい)
事前の作業として、レーダースクリーンに表示されている銘柄と同じ銘柄を同じ順序でエクセルに用意しておきます(コピペでOK)

プログラム

value1 = GetAppInfo( AiRow );												// レーダースクリーンの行を取得
plot1(RSData.sheets[1].CellsAsDouble[3,(Value1)+1], !( "有利子負債(億)" ));	// エクセルワークブック、シート、3列目、レーダースクリーンと同じ行を読み表示、(+1は見出し分)
Plot2(RSData.sheets[1].CellsAsDouble[4,(Value1)+1], !( "外国人保有%" ));	// 同じく4列目
Plot3(RSData.sheets[1].CellsAsString[5,(Value1)+1], !( "優待内容" ));		// 同じく5列目

解説

Value1にレーダースクリーンの行を取得し代入します
plot1にエクセルワークブックRSDataのシート1番目、
3列目の2行目のセルを読み代入します
plot2に同様に4列目の2行目のセルを読み代入します
plot3に同様に5列目の2行目のセルを読み代入します
最小コードは、読み書きする項目数+1です(行の取得用)

詳細

GetAppInfoは、指定キーワードに基づいて、呼び出しているアプリケーションの属性を指す数値を返す予約語です
キーワードにAiRowを指定するとレーダースクリーンの行番号を識別します
取得するデータ値によって CellsAs〇〇 の部分をデータのタイプと合わせる必要があります
文字値はCellsAsString
整数値はCellsAsint
少数値はCellsAsDouble
プログラムコードがこんなに少なくてエクセルと読み書き出来るなんて驚きですが、その為には少し作業が必要です
表示-ツールバー-ツールボックスのOffice-WorkbookをWクリック
プログラムコードエディタの下にコンポーネントトレイが出来るので、
下に表示されたコンポーネントをクリックしてプロパティをクリックすると
以下の画面が表示されるので、ここにエクセルのファイルのある場所、ワークブック名、読みだけか、書き込みもするか等を選択、記入します

プロパティの詳しい内容です

プロパティ欄にエラーがなければ「RSData」コンポーネントが働いてくれて先程の4行コードで済みます
コンポーネントの内容は、表示-デザイナージェネレーションコードでソースを表示することが出来ます
var: elsystem.office.excel.Workbook RSData( null );
{ This method gets called by EasyLanguage one time at the beginning to create and initialize the components }
method override void InitializeComponent()
begin
	RSData = new elsystem.office.excel.Workbook;
	//---------------------------
	//rsdata
	//---------------------------
	RSData.FileName = "c:/Users/トレステ用.xls";
	RSData.Shared = true;
	RSData.Visible = true;
	RSData.Load = true;
	RSData.SaveOnClose = false;
	RSData.Name = "RSData";
end;

このコードをプログラムにコピペしてコンポーネントを削除しても結果は同じになります

書き込み

書き込みのプログラムは、個人的に今のところ必要性がないので作成していませんが、プロパティの書き込みをtrueにしてあとは基本的に読み込みの逆をやればいいだけだと思っています

タイミング的には以下な感じですかね
・書込みたい項目が更新された時
・タイマーで定期的
・時間や数値が達した時
・インジケータやトレステを終了する時
・書き出すボタンを作って押した時

作成する必要性が出て来たらここに追記します

サポートされると喜んでアイスを買っちゃいます!٩(๑❛ᴗ❛๑)۶