目次
1.サンプルファイル
サンプルとして、Excelファイルを開くで開いた以下ファイルのシート「都道府県」に対して展開してみます。
2.展開例
1.行方向を非表示にする
6~8行目を非表示にする展開例です。
%dde_hide_cell(
file =都道府県.xlsx,
sheet =都道府県,
cell =r6:r8,
hide =1
);
以下のように、6~8行目が非表示になりました。
2.列方向を非表示にする(失敗例)
今度は3列目のみ非表示にしてみます。
%dde_hide_cell(
file =都道府県.xlsx,
sheet =都道府県,
cell =c3:c3,
hide =1
);
しかし、以下のように、2~4列が非表示になり、表が消えてしまいました。
これは下図のように、2~4列にまたがってセルが結合されているためです。
DDEはセル結合と相性が悪いため注意が必要です。
セルの書式設定で「選択範囲内で中央」揃えにすれば、セル結合のように見せることもできますが、悩ましいところです・・・。
3.参考プログラム
以下は、参考プログラムになります。
右上のコピーボタンを押せば、プログラム全体をコピーできます。
%macro dde_hide_cell(file=, sheet=, cell=, hide=1);
%put --------------------------------------------------;
%put セルの表示・非表示;
%put dde_hide_cell; /*セルを表示・非表示にする*/
%put &=file; /*対象ファイルを指定(省略した場合はアクティブファイルが対象となる)*/
%put &=sheet; /*対象シートを指定(省略した場合はアクティブシートが対象となる)*/
%put &=cell; /*対象となる行または列を指定(例、r5:r10、c5:c20)*/
%put &=hide; /*非表示=1(既定値)、再表示=2、最適値=3を指定*/
/*
セルの高さ/幅を指定
[row.height(またはcolumn.width)(<高さ(幅)>,<範囲>,<標準>,<種類>)]
<標準>true :標準の高さ(標準の幅)
<範囲>RxxCxx:RxxCxx形式で指定
<種類>1:非表示
2:再表示
3:最適値
*/
%put --------------------------------------------------;
filename xlssys dde "excel|system";
data _null_;
file xlssys;
put '[error(false)]';
%if %length(&file.)>0 %then %do;
put "[activate(""&file."")]";
%end;
%if %length(&sheet.)>0 %then %do;
put "[workbook.activate(""&sheet."")]";
%end;
put "[select(""&cell."")]";
%if %index(%upcase(&cell.), C) > 0 %then %do;
put "[column.width(,,,&hide.)]";
%end;
%if %index(%upcase(&cell.), R) > 0 %then %do;
put "[row.height(,,,&hide.)]";
%end;
put '[select("r1c1")]';
run;
filename xlssys clear;
%mend dde_hide_cell;