Excel操作 SASマクロ

【SAS】セルの書式設定(罫線、フォント、文字サイズ、色、セル幅、セル削除)をする(DDE)

本ページは、以下のサイトを参考にしています。
SAS_help@wiki
SASmemo

1.サンプルシート

サンプルとして、Excelファイルを開くで開いた以下ファイルのシート「都道府県」に対して展開してみます。
open_excel
 

2.展開例

セル削除

行削除

行削除の展開例です。

%dde_cell_format(file=都道府県.xlsx, sheet=都道府県, cell=r5:r9, type=edit.delete(2));

指定した行が削除されています。
dde_cell_format_del_row
 

列削除(失敗例)

列削除の失敗例です。

%dde_cell_format(cell=c3, type=edit.delete(2));

指定していない列まで削除されています。
dde_cell_format_del_column
 
これは3~5列にまたがってセル結合されているためです。
dde_hide_cell_column_ketsugo
DDEはセル結合と相性が悪いのでご注意ください。
 

範囲削除

セルを範囲削除してみます。

%dde_cell_format(cell=r5c2:r9c3, type=edit.delete(2));

以下のように、指定した範囲を削除し、下方にあったセルが上詰めされてます。
dde_cell_format_del_range
 

文字列書式の操作

文字列にする

文字列にする展開例です。

%dde_cell_format(cell=r2c6:r10c8, type=format.number("@"));

指定したセルが「文字列」になっています。
dde_cell_format_mojiretsu
 

フォントを変える

フォントを変えるには、以下のコマンドを使用します。

format.font("<フォント>",<サイズ>,<太字>,<イタリック>,<下線>,<打ち消し線>,<色>)

<フォント>
フォントを指定する

<サイズ>
文字サイズを指定する

<太字>,<イタリック>,<下線>,<打ち消し線>
true or false

<色>
1~56で指定する
カラー番号参考サイト

 
フォントを変える展開例です。

%dde_cell_format(cell=r3c2:r3c4, type=format.font("MS 明朝",20,,,,,3));

指定したフォント、サイズ、色に変わっています。
dde_cell_format_font
 

罫線を引く

罫線を引くには、以下のコマンドを使用します。

border(<外枠>,<左>,<右>,<上>,<下>,<網掛け>,<外枠色>,<左色>,<右色>,<上色>,<下色>)

<外枠>,<左>,<右>,<上>,<下>
0:なし
1:実線
2:太線
3:破線
4:点線
5:極太線
6:二重線
7:細線

<網掛け>
true or false

<外枠色>,<左色>,<右色>,<上色>,<下色>
1~56で指定する
カラー番号参考サイト

 
セル範囲を指定して、罫線を引いてみます。

%dde_cell_format(cell=r2c2:r10c4, type=border(,1,2,6,4,false,,3,5,10,26));

この展開例では、セルを範囲指定して、<左>,<右>,<上>,<下>のすべてに罫線を引いているので、ヘンテコな仕上がりになっています。
目的に応じて、borderの引数を変えてみて下さい。
dde_cell_format_line
 

セル高さ・幅調整

セル高さ・幅調整では、以下のコマンドを使用します。

row.height(またはcolumn.width)(<高さ(幅)>,<範囲>,<標準>,<種類>)

<高さ(幅)>
サイズを指定する

<範囲>
R1C1形式で指定
※%dde_cell_format(file=, sheet=, cell=, type=)の引数cellを指定していれば、省略しても問題ない

<標準> 標準の高さ(標準の幅) にする
true or false

<種類>	
1:非表示 
2:再表示 
3:最適値

 

行高さ調整

「row.height」を指定して、行高さを調整してみます。

%dde_cell_format(cell=r3, type=row.height(40));

以下のように、行高さが40に変わりました。
dde_cell_format_row_height
 

列幅調整

「column.width」を指定して、列幅を調整してみます。

%dde_cell_format(cell=c2:c4, type=column.width(25));

以下のように、列幅が25に変わりました。
dde_cell_format_column_width
 

行高さ・列幅自動調整

つぶれた文字を、列幅自動調整してみます。

%dde_cell_format(cell=c2:c4, type=column.width(,,,3));

以下のように、各列が必要最低限の列幅に調整されています。
dde_cell_format_column_jido
 

3. 参考プログラム

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

%macro dde_cell_format(file=, sheet=, cell=, type=);
%put --------------------------------------------------;
%put dde_cell_format;	/*セルの書式設定をする*/
%put &=file;			/*対象ファイルを指定(省略した場合はアクティブファイルが対象となる)*/
%put &=sheet;			/*対象シートを指定(省略した場合はアクティブシートが対象となる)*/
%put &=cell;			/*結合するセルを指定(R1C1形式のみ指定可、例r3c3:r4c4)*/
%put &=type;			/*書式設定を指定する*/
%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 "[%superq(type)]";
	run;
	filename xlssys clear;

%mend dde_cell_format;