%macro DELSHEET(rc); %local vlen nlen k var; data _null_; rc = "&rc."; s = find(rc, "R"); e = find(rc, "C"); r1 = substr(rc, s+1, e-s-1); s = e; e = find(rc, ":"); c1 = substr(rc, s+1, e-s-1); rc = substr(rc, e+1, length(rc)-e); s = find(rc, "R"); e = find(rc, "C"); r2 = substr(rc, s+1, e-s-1); c2 = substr(rc, e+1, length(rc)-e); call symput("vlen", c2-c1+1); call symput("nlen", r2-r1+1); run; %do k = 1 %to &vlen.; %let var = &var. y 1. x 1.; %end; data dummy; do i = 1 to &nlen.; output; end; filename ddeout dde "excel|[&filename.]&sheetname.!&rc."; data _null_; set dummy; file ddeout notab; x = '09'x; y = '00'x; put &var.; run; %mend DELSHEET;
%let filename = Book1.xlsx; %let sheetname = Table 1; %DELSHEET(R1C1:R50C10);
あると使うかなぁと思って作ってみました。
- 矩形領域しか初期化できません。
- RC形式しか対応してません、始点と終点を省略しないで書かないと関係ない所が消えるかも。
- エラー処理とかなんもしてないので気をつけて使おう。