Excel操作 SASマクロ

【SAS】指定したセルにテキストを出力する(DDE)

1.サンプルシート

サンプルとして、SASデータセットの変数値をExcelシートに出力するの出力結果を使用してみます。
以下の状態からスタートです。
dde_out
 

2.展開例

以下が展開例で、引数fileとsheetは省略可能ですが、その場合はアクティブファイルとアクティブシートが対象となります。
また、引数cellに指定できるセルはR1C1形式のみになります。

%dde_put_text(file=都道府県.xlsx, sheet=都道府県, cell=r2c6, text=都道府県);
%dde_put_text(cell=r3c6, text=コード);
%dde_put_text(cell=r3c7, text=名前);
%dde_put_text(cell=r3c8, text=人口);

以下のように、指定したセルにテキストを出力することができました。
dde_put_text
もちろん、出力するテキストは数値でも問題ありません。
 

3. 参考プログラム

以下は、参考プログラムになります。
右上のコピーボタンを押せば、プログラム全体をコピーできます。

%macro dde_put_text(file=, sheet=, cell=, text=);
%put --------------------------------------------------;
%put dde_put_text;	/*指定したセルにテキストを出力する*/
%put &=file;		/*対象ファイルを指定(省略した場合はアクティブファイルが対象となる)*/
%put &=sheet;		/*対象シートを指定(省略した場合はアクティブシートが対象となる)*/
%put &=cell;		/*出力するセルを指定(R1C1形式のみ指定可、例r3c3)*/
%put &=text;		/*出力するテキストを指定*/
%put --------------------------------------------------;

	filename xlssys dde "excel|system";
	data _null_;
		file xlssys;
		put '[error(false)]';
		%if %length(%superq(file))>0 %then %do;
			put "[activate(""%superq(file)"")]";
		%end;
		%if %length(%superq(sheet))>0 %then %do;
			put "[workbook.activate(""%superq(sheet)"")]";
		%end;
		put "[select(""&cell."")]";
		put "[formula(""%superq(text)"")]";
	run;
	filename xlssys clear;

%mend dde_put_text;