<SASシステムとExcelとのデータ交換(DDE)>
- 動的データ交換機能(Dynamic Data Exchange:DDE)を利用して、Windows,アプリケーション間で情報を交換する。
- SASシステムをクライアントとして、クライアント・アプリケーションがサーバー・アプリケーションに
情報を要求するというかたちのクライアント/サーバ方式を採用している。
構文
options noxwait noxsync;
filename fileref DDE 'アプリケーション名 | トピック' <オプション> ;
data _null_;
set test;
file fileref <オプション> ; /*データ書き込み*/
infile fileref <オプション> ; /*データ読み込み*/
put out1 out2 out3 … ;
run;
- DDEトリプレット・・・アプリケーション名 | トピック
※DDEトリプレットは使用するアプリケーションによって変わる。
EXCELファイルのマクロを発行できるようになる。
アプリケーション名:DDEアプリケーションを指定。例)Microsoft Excel→'EXCEL'
トピック :SASシステムとアプリケーション間のトピック名(ファイル名 or system)を指定 。
例)Microsoft Excel→'SYSTEM'
<オプション>
notab : Excelから送られたデータ中のタブをスペースに変換しないようにする。
dlm= : 区切り文字を指定。'09'xはタブ文字の16進文字コード。
例) Excel…DLM='09'x;
DSD : 区切り文字が2つ連続した場合に欠損値として扱う。デフォルト区切り文字はコンマ。
MISSOVER : INPUTステートメントが現在のレコードの終わりに到達した時に
見つからなかった変数値が欠損値として設定される。
lrecl : レコード長をバイト単位で指定します。Windowsでのデフォルト値は256。
record-lengthの値は、1~1,048,576(1MB)の範囲で指定できる。
<対象となるシートおよび範囲を指定>
【構文】 アプリケーション名 | [ファイル名] シート名!開始位置:終了位置
開始位置:終了位置 :セルの範囲をRxxCxx:RxxCxx形式で指定。
例) excel |Tables! R4C1:R1000C5;
<DDE使用前に指定するオプション>
xwait : XコマンドでSASシステムから制御した後、再度SASシステムに戻るにはexitを入力する。
noxwait : XコマンドでSASシステムから制御した後、自動的に再度SASシステムに戻る。
xsync : Xコマンドで開始した処理が終了するまでSASシステムに戻らない。
noxsync : Xコマンドで開始した処理の終了を待たずにSASシステムに戻る。
<Excelの起動>
- xステートメント・・・SASシステムからOSコマンドを発行する。
※ ""(ダブルコーテーション),''(シングル)どちらでも起動可能。
半角スペースを含んだパスを指定する際は、そのままでは起動できないため、""でクオートする。
- 新規にExcelを起動するとき : x "start excel";
- 既存ファイルを起動するとき : x "ファイル名のフルパス";
例)x "'D:\My Document\book.xls'";
参考1)
%sysexec"start excel";
※%sysexecは半角スペースを含んだパスでも問題なく動作する。
" "で囲まないと内部コマンド、外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されない。
参考2)
'[open("ファイル名")]';
【構文】open (’ファイル名’)
オープンするファイルを’’で囲んで指定。
例)'[open("'D:\My Document\book.xls")]';
参考3)
sleep関数 : 指定された秒数、SASシステムの実行を停止する。
data _null_ ;
rc = sleep(2) ;
run;
<Excelセルの操作>
/*シートをアクティブにする*/
【構文】 '[workbook.activate("シート名")]';
<範囲> 選択するセル、またはセル範囲を指定。
相対参照:アクティブセルを基準に相対参照を指定する。
外部参照:直接セルの範囲を指定。
<アクティブセル> アクティブセルにするセルを指定。
※連続していないセルを選択するには、,(カンマ)で区切って指定。
例) '[select("R[0]Cxx:R[0]Cxx")]';
'[select("RxxCxx:RxxCxx")]';
'[select("R1C1:R2C2,R8C1:R6C3")]';
<ページ設定>
【構文】'[page.setup(<ヘッダー>,<フッター>,<左余白>,<右余白>,<上余白>,<下余白>,
<行列番号印刷>,<枠線印刷>,<中央水平>,<中央垂直>,<用紙方向>,
<用紙サイズ>,<拡大縮小>,<ページ番号>,<印刷方向>,<白黒印刷>)]'
<ヘッダー>ファイルのヘッダーに使う文字列と構文を指定。
<フッター> ファイルのフッターに使う文字と構文を指定。
<左右上下余白>ページの余白の値を指定。単位はインチ。
<行列番号印刷>
<枠線印刷>
<中央水平>
<中央垂直>
<用紙方向>1:縦 2:横
<用紙サイズ>1-26を指定。
5 :A3
9 :A4
11 :A5
12 :B4
13 :B5
<拡大縮小>%で指定。
<ページ番号>先頭のページ番号指定。
<印刷方向>方向を指定。
1: 上から下へ改ページし、下端で右へ移動。
2: 左から右へ改ページし、右端で下へ移動。
<白黒印刷>true : 背景色白
false: セルのパターンが印刷される
<タイトル設定>
'[set.print.tite("","")]';
【構文】 '[set.print.tites("<列タイトル>","<行タイトル>")]';
<フォント設定>
/*フォント設定1*/
'[format.font("MSゴシック",9,true,true,true,true5)]';
【構文】'[format.font("<フォント>",<サイズ>,<ボールド>,<イタリック>,<下線>,<打ち消し線>,<色>)]'
/*フォント設定2*/
'[font.properties(,,,,true)]';
【構文】'[font.properties("<フォント>",<スタイル>,<サイズ>,<取り消し線>,<上付き>,<下付き>,<袋文字>,
<影付き文字>,<下線>,<色>,<標準フォント>,<背景>,<文字番号>,<文字数>)]';
<表示形式の設定>
【構文】'[format.number("@")]'; 全てのセルの表示形式を文字列に設定する。
format.numberを指定しない場合、セルは数値タイプになる。
<セルの高さ/幅を変更>
'[row.height(9)]';
'[column.width(20,,false,3)]';
【構文】'[row.height(<高さ(幅)>,<範囲>,<標準>,<種類>)]'
<標準>true :標準の高さ(標準の幅)
<範囲>RxxCxx:RxxCxx形式で指定。
<種類>1:非表示
2:再表示
3:最適値
<セル内容の配置を指定>
'[alignment(3,false,2,0,false)]';
【構文】'[alignment(<横位置>,<全文字表示>,<縦位置>,<文字方向>)]'
<横位置>
1:標準
2:左詰
3:中央
4:右詰
5:繰り返し
6:両端揃え
7:選択範囲で中央
8:均等
<全文字表示>
true: セルの幅にあわせて全文字列をセル内に表示(折り返し表示)。
falseまたは省略:折り返し表示を行わない。
<縦位置>
1:上詰
2:中央
3:下詰
4:両端揃え
5:均等
<文字方向>
0:横書き
1:縦書き
2:下から上への横書き
3:上から下への横書き
<罫線の設定>
'[border(,,,7,7)]'
【構文】'[border(<外枠>,<左>,<右>,<上>,<下>,<網掛け>,<外枠色>,<左色>,<右色>,<上色>,<下色>)]';
<外枠>,<左>,<右>,<上>,<下>
0:なし
1:実線
2:太線
3:破線
4:点線
5:極太線
6:二重線
7:細線
<網掛け>
true :網掛けする。
falseまたは省略:網掛けしない。
<色>
色を1-16で指定。
<手動改ページ・解除>
【構文】'[set.page.break()]';
'[remove.page.break()]';
<マクロの実行>
【構文】 '[run("マクロ名")]';
<ファイルの保管>
【構文】 '[close()]';
'[close("true")]' :ファイルを保管する。
'[close("false")]' :ファイルを保管しない。
'[close()]' :ファイルが変更されていればメッセージを出力する。
<保存>
'[save.as("D:\xxxxxxxxxx.xls")]';
【構文】'[save.()]';
現在のファイル名で保存。
'[save.as("<ファイル名>",<ファイル形式>,<読み取りパスワード>,
<バックアップ>,<書き込みパスワード>,<読み取り専用>)]';
<ファイル名> ファイル名を指定。
<ファイル形式> 省略すると標準になる。
<読み取りパスワード> 半角パスワードを''で囲んで指定。
<バックアップ> バックアップファイルを作成する。(true or false)
<書き込みパスワード> 半角パスワードを''で囲んで指定。
<読み取り専用>(true or false)
<終了>
【構文】'[quit()]';
Excelを終了して、オープンしているファイルをクローズする。
最終更新:2008年10月12日 21:12