<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使用前に指定するオプション>

  • optionsステートメント
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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。